2015-10-29 9 views
4

我已經完成使用will_paginate寶石分頁現在我想要無限滾動使用這個寶石,我已經遵循railcast和這SO鏈接和寫入所有關於此的代碼。問題是數據很好,但當我向下滾動時,它會在頁面上重複多次。我不知道它爲什麼這樣做。任何幫助將是可觀的。無盡的滾動給滾動到下一頁的模板錯誤

我的控制器代碼:

def locations 
    merchants = Merchant.where("role = ?", 'Merchant') 
    @merchants_data = merchants.paginate(:page => params[:page], :per_page => 20) 
    respond_to do |format| 
     format.html 
     format.js 
    end 
    end 

_location.html.erb:

<table> 
    <tr> 
    <th> 
     Name 
    </th> 
    </tr> 
    <% @merchants_data.each do |x| %> 
    <tr> 
    <td> 
     <%= x.name %> 
    </td> 
    </tr> 
    <% end %> 
</table> 

<%= will_paginate @merchants_data %> 

home.js.coffee:

jQuery -> 
if $('.pagination').length 
    $(window).scroll -> 
    url = $('.pagination .next_page').attr('href') 
    if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50 
     $('.pagination').text('Fetching more locations...') 
     $.getScript(url) 
    $(window).scroll() 

location.js。 erb:

$('#locations').append('<%= j render partial: "locations", collection:@merchants_data %>'); 
<% if @merchants_data.next_page %> 
    $('.pagination').replaceWith('<%= j will_paginate(@merchants_data) %>'); 
<% else %> 
    $('.pagination').remove(); 
<% end %> 
+1

errormessage是什麼? –

+0

@huanson它給ActionView :: MissingTemplate錯誤。 –

+0

對不起,但它很愚蠢地說exception_class!你已經說過它的缺失模板。顯然我們(或者我)要求它的投擲路徑,所以他尋找哪個模板並且找不到。 ;) –

回答

0

在你location.js.erb你正在做render @merchants_data將預期存在部分_merchant.html.erb它將呈現在該數據中的每一Merchant實例。我期望這是rails正在尋找的模板,沒有找到並報告錯誤。 「渲染集合」下的rails guide on layouts and rendering中有更多詳細信息。

所以,你需要提供一個局部渲染商家或者稍微不同的渲染(太多的選項)。

雖然您可能還有其他問題。我在id="locations"的html中沒有看到任何東西,所以它很難追加任何渲染。

+0

我已經解決了這個問題,現在它正在顯示下一頁記錄,但現在它在每個滾動條上重複相同的元素,當我們到達頁面底部時,數據來自第三頁,但每次都重複相同的記錄直到它到達頁面的底部。 –

+0

聽起來像是一個新問題。如果你已經解決了問題,那麼你應該發佈並回答解釋是什麼解決方案。 – Shadwell

+0

該問題沒有得到解決。我獲得了頁面上的數據,但是當我向下滾動到下一頁時,數據正在重複。 –