Я делаю все возможное, чтобы создать значок или виджет для моего сайта , который является сайтом rails.
По сути, это сайт, на котором пользователи публикуют контент, который они создали, а другие, кому нравится этот контент, могут сделать пожертвование, чтобы выразить свою признательность за него.
Я задал похожий вопрос некоторое время назад о том, как создать виджет, но это было до того, как я действительно изучил Javascript.
Первый скрипт (в localhost: 3000 / javascripts / widget.js) работал нормально, я думаю:
var Widget =
{
init:function()
{
var loc = window.location;
var title = document.title;
var href = 'http://localhost:3000/donations/new.js?url=' + encodeURIComponent(loc);
href = href + '&title=' + encodeURIComponent(title);
var script = document.createElement('script');
script.src = href;
script.type = "text/javascript";
document.documentElement.firstChild.appendChild(script);
}
};
Widget.init();
(Причина, по которой я дал ему название new.js, заключалась в том, что именно там вся статистика по ссылке отображается на основном сайте)
Чтобы протестировать этот скрипт, я создал простой HTML-файл для его вызова:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test Widget</title>
<script src="http://localhost:3000/javascripts/widget.js" type="text/javascript"></script>
</head>
<body>
<h1>Test Widget</h1>
</body>
</html>
Когда запускается приведенный выше скрипт, я проверил firebug и убедился, что он вызывает второй скрипт:
<script src="http://localhost:3000/donations/new.js?url=file%3A%2F%2F%2FC%3A%2Fgoldhat_production%2Ftest_widget.html&title=Test%20Widget" type="text/javascript"></script>
Наконец, я создал файл new.js.erb со следующим скриптом, просто чтобы убедиться, что он вызывается:
var Stats =
{
init: function()
{
alert("Hello World!");
}
};
Stats.init();
И в контроллере пожертвований я добавил следующий код к «новому» действию:
respond_to do |format|
format.js
format.html
end
Итак, я обернулся и не получил предупреждение Hello World, когда обновляю страницу, но когда я получаю то, что на самом деле вызывается, я получаю эту ошибку (усеченную):
<code> 26<h1>
27 ActionController::MethodNotAllowed
28
29</h1>
30<pre>Only put requests are allowed.
31
32
33
34
RAILS_ROOT: c:/goldhat_production
35
36
Кажется, есть много мест, где я мог бы ошибиться, хотя я не уверен, где именно.