Получение текущего номера элемента или индекса при использовании will_paginate в приложении rails - PullRequest
0 голосов
/ 31 декабря 2010

У меня есть приложение rails, которое хранит просмотренные фильмы, прочитанные книги и т. Д. На индексной странице для каждого типа перечислены разбитые на страницы коллекции всех его элементов, используя will_paginate, чтобы вернуть 50 элементов на страницу. Когда я выводю элементы, я хочу отобразить число, чтобы указать, что это за элемент в общей коллекции. Нумерация должна быть отменена, так как коллекция отображается самой последней. Это может быть связано не с will_paginate, а с каким-то другим методом расчета.

Я буду использовать один и тот же порядок в нескольких типах, поэтому его нужно будет многократно использовать. В качестве примера, скажем, у меня есть 51 фильм. Первый элемент первой страницы должен отображаться:

  1. Бойцовский клуб - Просмотрено: 30 декабря 2010

В то время как последний элемент на странице должен отображаться:

  1. Матрица - Просмотрено: 3 января 2010

Постраничная коллекция доступна как переменная экземпляра, например, @movies и @ movies.count будут отображать количество элементов в перемещаемой коллекции. Так что, если мы на странице 1, movies.count == 50, а на странице 2 @ movies.count == 1. Использование Movie.count даст 51.

Если можно получить доступ к номеру и размеру страницы, можно рассчитать число, так как их можно вернуть? Хотя я надеюсь, что есть что-то, что уже существует, чтобы справиться с этим расчетом!

Ответы [ 2 ]

3 голосов
/ 31 декабря 2010

Взгляните на встроенную функцию:

<%= page_entries_info @posts %>  #-> Displaying posts 6 - 10 of 26 in total
3 голосов
/ 31 декабря 2010

Это кажется немного хакерским, но я нашел рабочее решение.Я создаю переменную экземпляра в виде:

@count = @movies.total_entries - @movies.offset

Затем при рендеринге каждого фильма я выводю @count и уменьшаю его.

Согласно моему предыдущему примеру с 51 позицией на двух страницах: total_entries == 51 и смещением == 0 (страница 1) или 50 (страница 2).

...