Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用js替换部分_Javascript_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Javascript 用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

我有一个rhtml部分“mypartial”,其中包含一个js块,如下所示:

<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"