2011-11-20 51 views
0

使用軌道3.1,jquery的v1.6.4,jQuery的UJS具有麻煩重裝泛音

即時試圖重新加載的部分,但它似乎沒有工作,當期望:

<div id="album"> <%= render 'album_index' %></div> 

<%=link_to 'Show All Albums', albums_path(:filter_by => 'all'), :remote => true%><br> 
<%=link_to 'Show Old Albums', albums_path(:filter_by => 'old'), :remote => true%><br> 

index.js。 ERB

$("#album").html('<%= escape_javascript(render 'album_index') %>'); 

當用戶第一次載入「索引」,<%=渲染「album_index」%>將與回報在我的相冊樣板中的所有行是默認的正常顯示。當用戶點擊「顯示舊相冊」鏈接時,jquery動作會加載'album_index',並會根據param [:filter_by] ==「old」在我的控制器中運行一個特定的查詢,並返回正確的結果,即回到視圖中。

現在的問題是,當我點擊加載「舊」過濾器的鏈接,它不會重新加載現有的渲染,但雙重呈現它。所以我的視圖包含了渲染'album_index',其結果來自param [:filter_by] ==「all」,並在下方顯示'album_index再次渲染,但結果來自param [:filter_by] ==「old」。

我會爲它不會雙重渲染,但重新加載現有的部分與新的結果。

有什麼建議嗎?

+0

我認爲渲染'album_index'部分存在問題。它應該是: $(「#album」)。html(「<%= escape_javascript(render'album_index')%>」); – mabounassif

回答

0

您正在使用單引號中的這第二部分的內部和外部的字符串:

$("#album").html('<%= escape_javascript(render 'album_index') %>'); 

這導致HTML以不正確的字符串,這可能會導致您的問題。對於外部字符串使用雙引號如下

$("#album").html("<%= escape_javascript(render 'album_index') %>");