2013-04-16 173 views
0

我一直在關注幾個railscasts,目前有一個使用will_paginate的無盡頁面的產品列表。我想要實現railscast#240以將實時搜索添加到結果中,但似乎存在一些邏輯衝突,我不知道如何糾正。jQuery的追加或替換基於來自鐵路的呼叫?

簡單來說,內部index.js.erb的無盡的頁面需要添加使用附加產品的現有名單如下產品:

$(「#產品」)。 append('<%= j render(@products)%>');

然而,生活搜索的實現需要更換的產品,從搜索結果新產品的現有名單:

$(「#產品」)。 html('<%= j render(@products)%>');

下面是完整的塊:

$('#products').html('<%= j render(@products) %>'); // live search 
    $('#products').append('<%= j render(@products) %>'); // endless page 
    <% if @products.next_page %> 
     $('.pagination').replaceWith('<%= j will_paginate(@products) %>'); 
    <% else %> 
     $('.pagination').remove(); 
    <% end %> 

了HTML()和append()爲各自的使用很好地工作,如果我評論一出其他作品,但如果我不發表評論一個它變得非常不可靠。

如何設置它,所以如果用戶在搜索框中鍵入它會觸發html(),並且如果用戶正在滾動觸發器append()?有什麼方法可以確定哪個事件觸發了index.js.erb調用?

回答

0

如果它曾經爲其他人出現過,請將其計算出來。對於大多數經驗豐富的導軌人員來說可能很明顯,但作爲新手,這對我來說是一個全新的概念。

我將搜索結果重構爲另一個控制器和視圖,讓我使用單獨的js.erb文件替換#products的內容,同時產品控制器處理滾動無盡頁面。

所以,現在我有views(產品)index.js.erb使用$('#products')。append and views> results> index.js.erb for $('#products')。html等

我還必須創建results_controller.rb索引操作以及結果資源到我的路由文件。

之後,兩者同時工作。