Will_paginate每页3个Rails

时间:2010-06-22 17:56:28

标签: ruby-on-rails will-paginate

我正在尝试使用Rails 3限制使用mislav's will paginate返回的元素数量。我目前正在使用:

# 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”似乎会导致问题。我有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:14)

结束强制将每页限制移动到查询中。似乎是Rails 3版本的错误。因此,使用:

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

答案 1 :(得分:4)

@Kevin,如果您想确保per_page在各种查询中保持一致,您可以使用Company.per_page,例如

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

您也可以试试Kaminari gem,它与rails 3更好地集成:http://railscasts.com/episodes/254-pagination-with-kaminari

class Company < ActiveRecord::Base
  paginates_per 7
end

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

答案 2 :(得分:0)

您为什么使用'公司'而不是'公司'。这可能只是一个错字,但似乎是一个问题。