用js替换部分

时间:2010-12-23 15:22:01

标签: javascript ruby-on-rails ruby-on-rails-3

我有一个rhtml部分“mypartial”,它包含一个像这样的js块:

<script type="text/javascript">new Ajax.Updater([...]);</script>

在rjs模板中,我打电话

page.replace "container", :partial => "mypartial"

替换工作正常,脚本块除外。这个块和它的javascript不会被写入html(我用firefox / web dev工具栏检查 - &gt; show generated source)。

我是否真的必须通过页面&lt;&lt;来自我的rjs模板中编写js部分“myjs()”;

3 个答案:

答案 0 :(得分:1)

我觉得奇怪的是你的page.replace会省略脚本标签......如果你使用javascript_tag助手怎么办?它也省略了吗?

另一种选择是将JavaScript放在从布局加载的JavaScript文件中。然后您不必担心删除和更换它。当然,除非你要插入Ruby变量。

如果你在JavaScript中使用Ruby变量,那么可能代替RJS,你的AJAX调用应该渲染一个js.erb模板,该模板抛出JavaScript然后呈现部分。

答案 1 :(得分:1)

部分将在脚本块完整的情况下呈现,但是,如果我没记错的话,Prototype会在将HTML插入DOM之前将其删除,以便稍后eval。这就是为什么它没有出现在DOM检查器中。您可以通过在生成的脚本中包含alert("HELLO FROM RJS")来测试这一点 - 它应该显示警报。

答案 2 :(得分:0)

这是我自己的错,但我会在这里写下可能遇到同样问题的任何人。

将评估js代码,但是:它不适用于document.observe('dom:loaded'),因为在您加载页面时将触发此事件,而不是在更新部分时触发。 面对自己