Ruby / Rails中的持久计数器

时间:2011-06-09 09:33:35

标签: ruby ruby-on-rails-3 pagination each counter

我有以下代码,它为我提供了一堆位置和每个位置的索引。

<%= paginate @locations %>

<% @locations.each_with_index do |location, index| %>
  <h1><%= index + 1 %></h1>
  <h2><%= location.name %></h2>
<% end %>

一切正常,我用正确的索引得到正确顺序的所有元素(宫殿有最多的访问,然后是酒吧等):

  • 1 Palace
  • 2 Bar
  • 3 Cinema
  • 4餐厅
  • 5 Ballon

我使用Kaminari进行分页,如果我点击第二页显示接下来的5个位置,则索引会再次从1开始,但它应该给我6个。

  • 下一页(应该以6继续索引)
  • 1 Arena(应为6)
  • 2 Stadion(应该是7)
  • 等......

那么如何在下一页继续获得持续的计数器/索引?

提前致谢

更新

我想出了以下内容,到目前为止效果很好:

<% if params[:page].nil? || params[:page] == "0" || params[:page] == "1" %>
  <% x = 0 %>
<% else %>
  <% page = params[:page].to_i - 1 %>
  <% x = page * 10 %>
<% end %>

<% @locations.each_with_index do |location, index| %>
  <%= index + x + 1 %>
  ...

1 个答案:

答案 0 :(得分:1)

each_with_index是一个普通的ruby方法(我认为是Enumerable),它对分页结构一无所知。您可能需要提供额外的计算,除非Kaminari提供了某些东西(我还没有使用Kaminari)

如果这是will_paginate,我会做这样的事情,也许这对你也有用:

<h1><%= index + 1 + ((params[:page] || 0 ) * @items_per_page )  %></h1>

(你必须自己设置@items_per_page)