2013-06-28 23 views
1

假设你有在轨像这样的链接:“远程:真正的”确实已加载的内容没有什么动态

<%= 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调用?

回答

2

你应该不需要做任何事情。

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

可以在line 290 of the rails js脚本

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

只要看到这个动作,你正确地定义你的回调(如ajax:successajax:complete等),一切都应该是花花公子。

欲了解更多信息看一看:

+1

你是对的(这是赞成。对()的不建议使用) - 的问题是我的CSRF令牌在内联注销后过期,导致后续的远程请求被重定向,导致呈现不同的整页响应而不是部分我是l为...打气。谢谢。 – cilphex

+0

好,赶快来吧! – NicoSantangelo