2010-06-22 58 views
9

我試圖限制與mislav's will paginate使用Rails 3.返回的元素的數量我目前正在使用:將分頁的Rails 3每頁

# Gemfile 
gem 'will_paginate', :git => 'git://github.com/mislav/will_paginate.git', :branch => 'rails3' 

# company.rb 
class Company < ActiveRecord::Base 
    self.per_page = 8 
end 

# company_controller.rb 
def index 
    @companies = Company.where(...).paginate(:page => params[:page]) 
end 

這確實分頁,而不是每頁8個項目。如果我修改代碼以不使用「where」,它工作正常。但是,添加「where」或「scoped」似乎會導致問題。任何想法我做錯了什麼?

謝謝。

回答

14

最終被迫將每頁限制移動到查詢中。看來是Rails 3版本的一個bug。因此,固定使用:

@companies = Company.where(...).paginate(:page => params[:page], :per_page => 8) 
+0

這是一個錯誤。現在修好了!使用gem'will_paginate','〜> 3.0.pre4' – mislav 2011-07-28 22:18:06

+0

@mislav謝謝!感謝您在寶石上的所有工作! – 2011-07-28 23:23:35

0

爲什麼你使用'公司'而不是'公司'。這可能只是一個錯字,但它似乎是一個問題。

+0

是的,一個錯字。現在修復它。 – 2010-07-06 07:15:02

4

@Kevin,如果你想確保per_page在各種查詢中是一致的,你可以使用Company.per_page,例如。

@companies = Company.where(...).paginate(:page => params[:page], :per_page => Company.per_page) 

你也可以試用一下雷寶石是更好地集成與軌道3:http://railscasts.com/episodes/254-pagination-with-kaminari

class Company < ActiveRecord::Base 
    paginates_per 7 
end 

@companies = Company.where(...).page(params[:page])