【问题标题】:Rails loads my @items n*n timesRails 加载我的 @items n*n 次
【发布时间】:2014-01-05 22:35:40
【问题描述】:

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

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

我正在使用 will_paginate gem。当页面加载时,它会加载“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>

感觉很简单,但我就是找不到。任何关于在哪里寻找的建议将不胜感激

【问题讨论】:

  • 尝试将render @items 更改为render 'item'
  • 这行得通,我原来是item,但那不起作用,所以我切换到@items 仍然不确定@items 是如何复制它的。谢谢
  • 几个月前我也遇到过类似的问题;)

标签: ruby-on-rails ruby database activerecord


【解决方案1】:

根据我的评论:改变

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

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

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

【讨论】:

    【解决方案2】:

    我觉得应该是

    Item.paginate... 不是Item.order...,请参阅将分页指南here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 2020-02-04
      • 2014-07-29
      • 2010-11-18
      • 2017-02-26
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多