Как лучше использовать вспомогательные методы с will_paginate? - PullRequest
2 голосов
/ 27 октября 2011

Я использую последнюю версию will_paginate с rails 3. Я хотел бы использовать out_of_bounds?установить текущую страницу на последнюю страницу, если параметр страницы выше, чем последняя страница.Я нашел способ сделать это так:

people = People.all.paginate :page => params[:page], :per_page => 20
@people = people.paginate(:page => (people.out_of_bounds? ? people.total_pages : params[:page))

Проблема в том, что мне приходится дважды вызывать paginate.Первый раз для создания WillPaginate :: Collection для использования out_of_bounds?и методы total_pages, и второй раз, чтобы фактически установить текущую страницу.Я также должен сделать это с большим количеством действий, так что это становится немного лучше.Я также не могу использовать before_filter или after_filter (не думаю?).Есть ли лучший способ добиться этого?

1 Ответ

0 голосов
/ 27 октября 2011

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

people = People.all.paginate :page => params[:page], :per_page => 20
@people = people.out_of_bounds? ? people.paginate(:page => people.total_pages) : people
...