Kevin Sylvestre
Kevin Sylvestre

Reputation: 38092

Will Paginate Rails 3 Per Page

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

Answers (3)

sobstel
sobstel

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

Kevin Sylvestre
Kevin Sylvestre

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

David Henner
David Henner

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

Related Questions