我正在尽我所能为my site(这是一个rails站点)创建站点徽章或小部件。在rails中创建站点徽章或小部件:调用第二个脚本的问题
本质上,它是一个用户发布他们创建的内容的网站,其他喜欢该内容的用户可以通过捐款表达他们的赞赏。
我问了一个similar question,回想一下如何创建一个小部件,但那是在我完成任何真正的Javascript研究之前。
第一个脚本(在本地主机:3000/Java脚本/ 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>
当上述脚本运行我检查萤火虫果然调用第二个脚本:
<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警报,但是当我得到什么实际被称为我得到这个错误(截断):
26<h1>
27 ActionController::MethodNotAllowed
28
29</h1>
30<pre>Only put requests are allowed.</pre>
31
32
33
34<p><code>RAILS_ROOT: c:/goldhat_production</code></p>
35
36<div id="traces">
似乎有很多地方我可能会出错,但我不知道在哪里。
我认为这可能与我的路线有关。我必须尝试一下并让你知道。 – 2010-07-13 00:46:46
嗨杰夫,你的解决方案工作。 我搞砸了路线,并决定最好有我自己的控件,只是为了不影响其他功能。 最后我在我的路线中有一个“map.resources:widget”这一行,以及一个包含hello世界代码的index.js.erb文件。看到在我的其他网站上弹出警报,这真是一种解脱! 非常感谢! – 2010-07-13 23:40:05