Rails加载我的@items n * n次

时间:2014-01-05 22:35:41

标签: ruby-on-rails ruby database activerecord

我正在创建一个rails web应用程序,它基本上只聚合用户帖子列表,并允许他们投票和评论。

我按照Railscast 114 - Endless Scrolling实现了无休止的滚动 发帖,虽然我遇到了一个问题,我不确定它是否与无休止的滚动有关,或者只是在同一时间发生。

我正在使用will_paginate gem。当页面加载时,它会在will_paginate调用中加载“n”个帖子,但这些帖子会显示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>

感觉就像它的简单,但我找不到它。关于在哪里寻找的任何建议都将非常感激

2 个答案:

答案 0 :(得分:1)

从我的评论:改变

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

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

以前的版本为item集合中的每个对象呈现@items部分(你在每个元素上再次迭代),这就是你获得n * n个项目的原因。

答案 1 :(得分:0)

我认为应该是

Item.paginate...而非Item.order ...,请参阅遗嘱分页指南here