9

我正在尝试限制使用mislav 返回的元素数量,将使用 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”似乎会导致问题。任何想法我做错了什么?

谢谢。

4

3 回答 3

14

最终被迫将每页限制移动到查询中。似乎是 Rails 3 版本的错误。因此,固定使用:

@companies = Company.where(...).paginate(:page => params[:page], :per_page => 8)
于 2010-07-05T04:50:09.047 回答
4

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

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

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

class Company < ActiveRecord::Base
  paginates_per 7
end

@companies = Company.where(...).page(params[:page])
于 2011-01-21T16:22:10.977 回答
0

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

于 2010-07-06T04:38:53.720 回答