will_paginate列表中每个项目的正确数字?

时间:2014-11-27 05:47:17

标签: ruby-on-rails ruby arrays pagination will-paginate

我在我的Rails应用程序中使用了will_paginate gem并循环遍历在页面上呈现的模型实例数组,每页限制为5个。在我添加will_paginate之前,我用简单的<%i + = 1%>编号了每个项目。当然每个循环通过数组+1,并且工作正常。

但是现在我使用will_paginate会在每个页面重新开始计数,所以第1页的项目分别为1,2,3,4,5,然后在第二页上重新开始... 1,2 ,3,4,5

显然这不是理想的。当您转到上一页时,如何让计数继续?

1 个答案:

答案 0 :(得分:4)

will_paginate Collection不仅仅是一个简单的ArrayActiveRecord::Relation。相反,它定义了一些additional methods,例如:current_pageper_pageoffsettotal_entriestotal_pages

您可以使用Collection#offset来计算当前索引:

<% @collection.each_with_index do |item, index| %>
  <%= @collection.offset + index + 1 %>
  ...
<% end %>

使用第一个索引初始化Enumerator#with_index可以简化哪些内容(请注意.each之间的with_index

<% @collection.each.with_index(@collection.offset + 1) do |item, index| %>
  <%= index %>
  ...
<% end %>