【问题标题】:Partial rendered via ajax does not contain javascript when it should通过 ajax 呈现的部分不包含 JavaScript
【发布时间】:2011-10-10 22:59:39
【问题描述】:

我有一个通过 ajax 呈现的部分内容,结果用于替换 div 的内容。此部分正确呈现,但是当我检查元素时,javascript 标记和它的 javascript 未在浏览器中呈现。部分类似如下

<style>
  /* some styles */
</style>
<script type="text/javascript">
  alert("did it work");
</script>

<% @array.each do |el| %>
  <!--make table w/ array -->
<% end %>

当我检查元素时,除了 javascript,一切都在那里。我在我的 Ajax.Updater 选项上有 evalJS: true (我正在使用原型,但我认为这没有任何区别)。奇怪的是,当我将以下内容放入操作中时,我可以在带有 js 的控制台中看到呈现的模板

test = render :partial => "my_partial.html.erb"
puts test
test

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby partials


    【解决方案1】:

    如果你看这里:http://api.prototypejs.org/ajax/Ajax/Updater/,你会注意到正确的选项名称是 evalScripts(但请阅读它的使用,因为它有一些限制)。

    【讨论】:

    • 有什么办法可以绕过 evalScripts 的非全局性,或者我需要将我的 js 本地化到那个部分吗?
    • 如果你真的想在全局范围内定义一些东西,你可以简单地使用:window.func = function() {}; window.prop = 3; 此外,已经在全局范围内定义的所有内容都对你可用,所以如果你定义了一个命名空间你可以像MY_NS.my_method = function() {};一样正常使用它
    • 没关系,我通过在初始页面中定义我需要的变量并在 ajax 响应中设置该变量来解决它
    • 这里的解决方案是什么@grizzgreen
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多