постоянный счетчик в Ruby / Rails для каждого - PullRequest
4 голосов
/ 09 июня 2011

У меня есть следующий код, который дает мне набор местоположений и индекс для каждого местоположения.

<%= 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 %>
  ...

1 Ответ

1 голос
/ 09 июня 2011

each_with_index - простой рубиновый метод (Enumerable, я думаю), который ничего не знает о структуре пагинации.Возможно, вам придется предоставить дополнительный расчет, если Kaminari не предоставит что-то (я еще не использовал Kaminari)

Если бы это был will_paginate, я бы сделал что-то подобное, и, возможно, это будет работать и для вас:

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

(вы должны установить @items_per_page самостоятельно)

...