Javascript 用js替换部分
我有一个rhtml部分“mypartial”,其中包含一个js块,如下所示:Javascript 用js替换部分,javascript,ruby-on-rails,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby On Rails 3,我有一个rhtml部分“mypartial”,其中包含一个js块,如下所示: <script type="text/javascript">new Ajax.Updater([...]);</script> 除了脚本块,替换工作正常。这个块和它的javascript不会被写入html(我用firefox/WebDevToolbar->ShowGeneratedSource检查过) 我真的必须通过页面在我的rjs模板中编写js部分吗?我觉得奇怪的是,你的页面.replac
<script type="text/javascript">new Ajax.Updater([...]);</script>
除了脚本块,替换工作正常。这个块和它的javascript不会被写入html(我用firefox/WebDevToolbar->ShowGeneratedSource检查过)
我真的必须通过页面在我的rjs模板中编写js部分吗?我觉得奇怪的是,你的
页面.replace会忽略脚本标记。。。如果使用javascript\u标记
helper会怎么样?它是否也忽略了这一点
另一种选择是将该JavaScript放在从布局加载的JavaScript文件中。这样你就不用担心拆卸和更换它了。当然,除非你在插入Ruby变量
如果您在JavaScript中使用Ruby变量,那么您的AJAX调用可能应该呈现一个js.erb模板而不是RJS,该模板将抛出JavaScript,然后呈现片段。片段将以完整的脚本块呈现,但是,如果我没记错的话,Prototype将在将HTML插入DOM之前删除它们,以便以后eval
。这就是为什么它没有出现在DOM检查器中。您可以通过在生成的脚本中包含一个警报(“来自RJS的HELLO”)
来测试这一点-它应该会显示警报。这是我自己的错误,但我将在这里为可能遇到相同问题的任何人写下它
js代码将被评估,但是:它对document.observe('dom:loaded')不起作用,因为此事件将在您完成页面加载时触发,而不是在您更新部分页面时触发。facepalming我自己不幸的是,我不得不担心如何动态删除/添加它,这就是为什么我希望它与replace一起工作;)哦,不幸的是,javascript_标记帮助程序没有帮助Edmy解释您的动态场景。AJAX不需要RJ。RJS只是带有Ruby风格的JavaScript。现在,您正在对RJS操作进行AJAX调用。相反,您对呈现js.erb模板的操作进行AJAX调用。同样的事情,不同的语法。这里有一个很好的例子:这证明了JavaScript正在被执行,所以它的编写方式肯定有问题。JS控制台中是否存在任何错误?
page.replace "container", :partial => "mypartial"