Могу ли я разбить результаты по годам? - PullRequest
0 голосов
/ 25 июня 2011

У меня есть коллекция около 100 предметов в год в течение 25 лет.Было бы неплохо перечислить их по годам, по страницам, чтобы было легче перейти к конкретному объекту.Есть ли плагин или гем для разбивки на коллекции Rails по годам вместо фиксированного количества элементов?Может быть, даже месяц?Можно ли адаптировать will_paginate для этого?

РЕДАКТИРОВАТЬ:

ss = Services.all.group_by { |s| s.date_of_service.year }

Это создает упорядоченный хэш, который я могу разбить на страницы с помощью ключей.

ss.keys.each { |k| p ss[k].count }

Ответы [ 2 ]

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

Я не думаю, что вы найдете такой драгоценный камень. И не должно быть так сложно самостоятельно реализовать простую систему нумерации страниц с использованием областей.

Полагаю, у вас нет отдельной таблицы в течение многих лет. Таким образом, чтобы получить полный список уникальных лет, вы должны использовать метод group.

  scope :years, lambda { select('year').group('year') }
  scope :year, lambda { |year| where(:year => year) }

Другой вариант - то, что предложил керуилин. Используйте любой драгоценный камень для пагинации (я использую каминари) с областью действия year.

0 голосов
/ 25 июня 2011

Я бы реализовал общее разбиение на страницы, используя will_paginate.Например, у вас будет 10-25 результатов на страницу независимо от того, какой год вы просматриваете.

Затем я бы внедрил второй механизм фильтрации, с помощью которого вы просматривали бы результаты по годам с помощью некоторого хорошего ole.AR / SQL магия.В моем приложении я использовал раскрывающийся список, чтобы выбрать год, но вы можете использовать другой элемент пользовательского интерфейса.

Не могу точно сказать, может ли will_paginate помочь вам с проблемой по годам, ноЯ бы не советовал настраивать его под свои нужды.Просто создает проблему совместимости, если вы не monkeypatch.

...