2012-02-28 57 views
5

我正在使用Rails 3.0與原型ujs rails.js腳本。用於動態添加內容的Rails UJS

我有一些link_to "...", :remote => true鏈接在頁面加載後被添加到頁面,所以rails.js已將ujs事件附加到所有a[data-remote]鏈接。

如何獲得rails.js重新掃描新鏈接?

rails.js似乎由一個匿名函數組成,所以我不能直接調用它。

我能想到的唯一方法就是將所有的rails.js包裝在我自己的函數中,然後我可以在頁面加載時調用*和*在添加新鏈接時調用。

這似乎是一個合理的做法,但我猶豫了,因爲我無法相信我有這個問題的第一個,有沒有做一個標準的方式...

+0

你有沒有碰運氣?我有同樣的問題。在此期間我正在使用'button_to',這讓我很難過。我不明白它,因爲它使用'委託',這應該提供遲到的綁定。代表已被取代..但這是另一回事。 – 2012-04-01 08:27:42

回答

2

當要渲染一個按鈕,鏈接等您使用Rails的helper

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

所以你在遠程視圖的響應(例如:some_view.js.erb/some_view.js.haml)你如果你想要一個:遠程元素,應該再次使用rails助手。 您不需要重新掃描新的DOM元素,以便連接遠程行爲。

在JS查看您可以更新/使用JavaScript

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

你也可以在瀏覽器的網絡聽診器看,如果新的行動正在發送替代從DOM內容。