Rails UJS用于动态添加内容

Dav*_*lie 5 ruby-on-rails prototypejs ujs

我正在使用Rails 3.0和原型ujs rails.js脚本.

我有一些link_to "...", :remote => true链接在页面加载后添加到页面中,所以在rails.js将ujs事件附加到所有a[data-remote]链接之后.

如何让rails.js重新扫描以获取新链接?

rails.js似乎由一个匿名函数组成,所以我无法直接调用它.

我能想到的唯一方法是将所有rails.js包装在我自己的函数中,然后我可以在页面加载时调用*和*当我添加新链接时.

这似乎是一种合理的方法,但我犹豫不决,因为我无法相信我是第一个遇到这个问题并且没有标准方法可以做到这一点......

Dob*_*hev 2

当您渲染按钮、链接等时,您可以使用 Rails 助手

= link_to "Add to basket", basket_path, :method => :post, :remote => true
Run Code Online (Sandbox Code Playgroud)

因此,在远程视图的响应中(例如:some_view.js.erb / some_view.js.haml ),如果您想要:remote元素,则应该再次使用 Rails 助手。您不需要重新扫描新的 DOM 元素,以便附加远程行为。

在 js 视图中,您可以使用 javascript 更新/替换 DOM 中的内容

:plain
        $('#some-id-selector').replaceWith("#{escape_javascript(render :partial => 'some_other_view.html.haml')}");
Run Code Online (Sandbox Code Playgroud)

您还可以在浏览器的网络检查器中查看是否正在发送新操作。