Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Pagination library for Rails, Sinatra, Merb, DataMapper, and more
Ruby Shell
Pull request Compare This branch is 46 commits ahead, 54 commits behind master.
Failed to load latest commit information.
lib will_paginate 3.0.7
script Fix `script/test_all` to exit with nonzero status on failures
spec Add test for pagination with select statement.
.gitignore fix view specs with Rails 3.0.0.beta3
.rspec setup continuous integration testing with Travis-CI
.travis.yml Test against Rails 4.1
Gemfile Bump Rails in tests to 4.0.5
Gemfile.lock Bump Rails in tests to 4.0.5
Gemfile.rails-edge Bump mysql2 gem in edge Rails
Gemfile.rails-edge.lock Bump mysql2 gem in edge Rails
Gemfile.rails3.0 Use "activerecord-mysql2-adapter" in Rails 3.0 tests
Gemfile.rails3.0.lock Use "activerecord-mysql2-adapter" in Rails 3.0 tests
Gemfile.rails3.1 replace Rake + ruby CI runner with one in bash
Gemfile.rails3.1.lock test against Rails 4.0.0.rc2 and Rails 4.1 (edge)
Gemfile.rails3.2 test against Rails 4.0.0.rc2 and Rails 4.1 (edge)
Gemfile.rails3.2.lock test against Rails 4.0.0.rc2 and Rails 4.1 (edge)
Gemfile.rails4.1 Test against Rails 4.1.2
Gemfile.rails4.1.lock Test against Rails 4.1.2
LICENSE Total rdoc love. Point out that this is framework-agnostic now Clarify Rails 3+ compatibility and suggest locking to 3.0.x
init.rb mix in Active Record/Action View directly on `require`
will_paginate.gemspec add license information to gemspec


will_paginate is a pagination library that integrates with Ruby on Rails, Sinatra, Merb, DataMapper and Sequel.


## Gemfile for Rails 3+, Sinatra, and Merb
gem 'will_paginate', '~> 3.0.6'

See installation instructions on the wiki for more info.

Basic will_paginate use

## perform a paginated query:
@posts = Post.paginate(:page => params[:page])

# or, use an explicit "per page" limit:
Post.paginate(:page => params[:page], :per_page => 30)

## render page links in the view:
<%= will_paginate @posts %>

And that's it! You're done. You just need to add some CSS styles to make those pagination links prettier.

You can customize the default "per_page" value:

# for the Post model
class Post
  self.per_page = 10

# set per_page globally
WillPaginate.per_page = 10

New in Active Record 3:

# paginate in Active Record now returns a Relation
Post.where(:published => true).paginate(:page => params[:page]).order('id DESC')

# the new, shorter page() method[:page]).order('created_at DESC')

See the wiki for more documentation. Ask on the group if you have usage questions. Report bugs on GitHub.

Happy paginating.

Something went wrong with that request. Please try again.