2011-10-26 162 views
2

我正在使用最新版本的will_paginate與rails 3.我想使用out_of_bounds?如果頁面參數高於最後一頁,則將當前頁面設置爲最後一頁。我找到了這樣做的方法:在will_paginate中使用helper方法的更好方法是什麼?

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

我不知道最好的解決方案,但至少可以在第二次調用該方法之前進行檢查(我想在大多數情況下,頁面參數都可以,因此您不必請致電paginate兩次):

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