5

我正在使用带有原型 ujs rails.js 脚本的 Rails 3.0。

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

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

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

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

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

4

2 回答 2

2

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

= link_to "Add to basket", basket_path, :method => :post, :remote => true

所以你在你的远程视图的响应中(例如: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')}");

如果正在发送新操作,您也可以在浏览器的网络检查器中查看。

于 2012-06-06T07:32:55.900 回答
1

您可以自己调用 Rails 的“远程”链接处理。例如:

$(document).on('click', 'a.load-ad-node', function() {
  $.rails.handleRemote($(this));
  return false;
});
于 2020-06-18T05:26:57.323 回答