2013-06-28 49 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