我正在使用最新版本的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(我不认为?)。有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
我不知道最好的解决方案,但至少你可以在第二次调用方法之前做检查(我想在大多数情况下,页面参数都可以,所以你不必调用分页两次):
people = People.all.paginate :page => params[:page], :per_page => 20
@people = people.out_of_bounds? ? people.paginate(:page => people.total_pages) : people