1

假设您在 rails 中有这样的链接:

<%= link_to "Next page", url_for(controller: controller_name, action: 'step2'), remote: true, method: :post %>

这变成了与属性的链接data-remote="true"。具有此属性的链接应该进行 AJAX 调用。

如果页面加载时它们在 DOM 中,它们会这样做。rails JS 将运行,解析data-remote属性,并设置一个侦听器以将点击转换为 ajax 调用。

但是,如果这个链接是动态加载的,那么它会在 rails js 运行并解析完所有内容后插入到 DOM 中。这意味着,如果您动态加载此链接,当您单击它时它不会进行 ajax 调用。它只会将整个窗口重定向到链接。

rails js是否提供了一些我可以手动调用的函数,它将重新解析这些data-remote属性的dom并确保它们都会进行ajax调用?

4

1 回答 1

2

你不应该做任何事情。

rails js 在加载时不会“解析”文档,而是将事件绑定到文档。因此,如果您创建新元素并触发事件,它就会冒泡并正常工作(如 中已弃用的.live()方法jQuery)。

您可以在 rails js脚本的第 290 行看到这一点

$(document).delegate(rails.linkClickSelector, 'click.rails', function(e) {

只要你正确地定义了你的回调(比如ajax:successajax:complete等),一切都应该是花花公子。

有关更多信息,请查看:

于 2013-06-28T03:47:02.843 回答