Reputation: 38092
I am trying to limit the number of elements returned with mislav's will paginate with Rails 3. I am currently using:
# 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
This does pagination, but not 8 items per page. If I modify the code to not use the "where" it works fine. However, adding "where" or "scoped" seems to cause issues. Any ideas what I'm doing wrong?
Thanks.
Upvotes: 9
Views: 16595
Reputation: 1462
@Kevin, if you want to be sure per_page is consistent across various queries you can use Company.per_page, eg.
@companies = Company.where(...).paginate(:page => params[:page], :per_page => Company.per_page)
You may also give a try to Kaminari gem which is much better integrated with rails 3: http://railscasts.com/episodes/254-pagination-with-kaminari
class Company < ActiveRecord::Base
paginates_per 7
end
@companies = Company.where(...).page(params[:page])
Upvotes: 4
Reputation: 38092
Ended up being forced to move the per page limit into the query. Appears to be a bug with the Rails 3 version. Thus, fixed using:
@companies = Company.where(...).paginate(:page => params[:page], :per_page => 8)
Upvotes: 14
Reputation: 21
Why are you using 'Companies' and not 'Company'. This might just be a typo here but it appears to be an issue.
Upvotes: 0