使用hel_paginate的helper方法有什么更好的方法?

时间:2011-10-26 22:54:37

标签: ruby-on-rails will-paginate

我正在使用最新版本的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 :(得分:0)

我不知道最好的解决方案,但至少你可以在第二次调用方法之前做检查(我想在大多数情况下,页面参数都可以,所以你不必调用分页两次):

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