2014-01-05 3 views
2

Я создаю веб-приложение rails, которое в основном просто объединяет список сообщений пользователей и позволяет им голосовать и комментировать.Rails загружает мои @items n * n раз

Я выполнял бесконечную прокрутку, следуя за сообщением Railscast 114 - Endless Scrolling , хотя у меня возникла проблема, что я не уверен, связано ли это с бесконечной прокруткой или просто произошло в одно и то же время.

Я использую жемчужину will_paginate. Когда страница загружается, она загружает «n» количество сообщений на вызов will_paginate, но затем эти сообщения отображаются n раз.

Например:

@item.order(params[:sort]).page(params[:page]).per_page(3) 

результата будет в дальнейшем отображаются

item1 
item2 
item3 
item1 
item2 
item3 
item1 
item2 
item3 

У меня есть следующий в указательном действии

@items = Item.order(sort_column + ' ' + sort_direction).page(params[:page]).per_page(5) 

это мой _item частичного

<% @items.each do |t| %> 
<div id="Post1" class="shadow"> 
    <table> 
    <tr> 
     <td> 
     t.stuff.... 
     </td> 
    </tr> 
    </table> 
</div> 

И это делают вызов в моем индексе

<div id='items'> 
    <%= render @items %> 
</div> 

Он чувствует, что его что-то простое, но я просто не могу найти его. Любые предложения о том, где искать были бы оценены

+1

Попробуйте изменить 'render @ items' на' render 'item''. – zrl3dx

+0

Это сработало, я использовал его как 'item', но это не работало, поэтому я переключился на' @ items'. Не знаю, как '@ items' дублировал его. Спасибо – jankyd

+0

У меня была аналогичная проблема много месяцев назад;) – zrl3dx

ответ

1

От моего комментария: изменение

<div id='items'> 
    <%= render @items %> 
</div> 

до

<div id='items'> 
    <%= render 'item' %> 
</div> 

Бывшая версия делает item частичным для каждого объекта в коллекции @items (где вы повторяетесь снова над каждым элементом), поэтому вы получаете n * n элементов.

0

Я думаю, что это должно быть

Item.paginate... не Item.order ... см отформатирует руководство here

Смежные вопросы