2011-10-29 2 views
3

나는 페이지 매김 3.0.2와 Rails 3.1.0을 사용할 것입니다.will_paginate가 잘못된 페이지 링크 수를 생성합니다.

다음 코드는 내 컨트롤러 내에 있습니다.

@users가 나는 위에서 users에 할당 된 부분에서
@users = User.visible_for(current_user). 
      includes(:study_courses). 
      ordered_by_last_name. 
      page(params[:page]).per_page(20) 

는 수행 20 사용자가 있다면 그것은 나에게 첫 번째 페이지가 20 사용자가 포함 된 6 개 페이지의 링크를 제공

= will_paginate users, previous_label: h("<"), next_label: h(">") 

의 두 번째 페이지에는 10 명의 사용자가 포함되어 있으며 나머지 페이지에는 0 명의 사용자가 있습니다. 가 will_paginate가 레코드를 계산하는 별개의 사용하지 않는 것을 알아 냈 : 나는 알아낼 수 없습니다

왜 대신 3

UPDATE의 생성 6 개 페이지 링크가 있습니다. 어떤 아이디어가 이것을 어떻게?

답변

9

OK, 난 내 자신에 대한 해결책을 발견 :

user_count = User.visible_for(current_user).count(distinct: true) 
    @users = User.visible_for(current_user). 
       includes(:study_courses). 
       ordered_by_last_name. 
       paginate(page: params[:page], 
         per_page: 20, 
         total_entries: user_count) 

내가 disctinct 사용 내 범위에서, 그러나 관계에 count를 호출하면 그 덮어 쓰기를 보인다. 따라서 손으로 계산해야하고 페이지 매김 방법으로 카운트를 전달해야합니다.

+0

처럼

내 문제를 해결 .... – tardjo

0

제 경우에는 .count도 잘못된 번호를 제공합니다. .count은 SQL whitch를 실행하기 때문에 "distinct"를 포함합니다. 내가 .length로 변경하고 잘 작동합니다. 이

user_count = User.some_scopes.length 
@users  = User.some_scopes.paginate(page: params[:page], 
             per_page: 20, 
             total_entries: user_count) 
관련 문제