Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 232
Kevin Sylvestre Avatar asked Jun 22 '10 17:06

Kevin Sylvestre


2 Answers

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)
like image 60
Kevin Sylvestre Avatar answered Oct 29 '22 06:10

Kevin Sylvestre


@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])
like image 29
sobstel Avatar answered Oct 29 '22 07:10

sobstel