2011-10-26 3 views
2

레일 3과 함께 will_paginate의 최신 버전을 사용하고 있습니다. out_of_bounds를 사용하고 싶습니다. 페이지 매개 변수가 마지막 페이지보다 높으면 현재 페이지를 마지막 페이지로 설정합니다.will_paginate와 함께 도우미 메서드를 사용하는 더 좋은 방법은 무엇입니까?

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

이 문제는 페이지 번호를 두 번 호출해야한다는 것입니다. out_of_bounds를 사용하기 위해 WillPaginate :: Collection을 처음 만들었습니까? total_pages 메소드 및 두 번째로 현재 페이지를 실제로 설정합니다. 나는 또한 더 많은 행동으로이 일을 할 필요가있다. 나는 before_filter 나 after_filter를 사용할 수 없다 (나는 생각하지 않는다?). 이것을 달성하기위한 더 좋은 방법이 있습니까?

답변

0

나는 가장 좋은 해결책을 모르지만, 적어도 두 번째 호출 전에 확인을 할 수있다. (대부분의 경우 페이지 매개 변수가 괜찮을 것이라고 생각한다. 페이지 번호를 두 번 호출하십시오) :

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