2011-10-29 44 views
3

我使用將分頁3.0.2和Rails 3.1.0。will_paginate生成錯誤的頁面鏈接數

以下代碼位於我的控制器中。

@users = User.visible_for(current_user). 
      includes(:study_courses). 
      ordered_by_last_name. 
      page(params[:page]).per_page(20) 

在部分地方@users已經從上面我分配了users做:

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

如果有20個用戶來說,它給了我6頁的鏈接,其中第一頁包含20個用戶,第二頁包含10個用戶,當然剩下的頁面包含零個用戶。

我想不通爲什麼有產生,而不是3

UPDATE 6個頁面鏈接: 想通了,will_paginate不使用不同的計數的記錄。任何想法如何做到這一點?

回答

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似乎覆寫。所以人們必須手工計數,並將計數傳遞給paginate方法。

+0

解決我的問題.... – tardjo

0

在我的情況下,.count也給出了錯誤的數字。因爲.count運行包含「distinct」的SQL。我將其更改爲.length,它工作正常。

像這樣

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