【问题标题】:persistent counter in Ruby/Rails for eachRuby/Rails 中的持久计数器
【发布时间】:2011-07-05 20:13:09
【问题描述】:

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

<%= paginate @locations %>

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

一切正常,我以正确的顺序和正确的索引获取所有元素(宫殿的访问量最多,然后是条形等):

  • 1 宫
  • 2 小节
  • 3 电影院
  • 4 餐厅
  • 5 气球

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

  • 下一页(应以 6 继续索引)
  • 1 个竞技场(应该是 6 个)
  • 2 个体育场(应该是 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 %>
  ...

【问题讨论】:

  • 你能用记录的id吗? &lt;h1&gt;&lt;%= location.id %&gt;&lt;/h1&gt;
  • 不保证id是连续的

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


【解决方案1】:

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

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

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

(你必须自己设置@items_per_page)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多