2011-02-06 00:28:11 -05:00
= Kaminari
2011-02-05 08:32:10 -05:00
2011-02-06 00:28:11 -05:00
A Scope & Engine based clean and powerful and customizable and sophisticated paginator for Rails 3
2011-02-05 08:32:10 -05:00
2011-02-06 00:28:11 -05:00
== Features
* Clean
Does not globally pollute Array, Hash, Object or AR::Base.
* Easy to use
Just bundle the gem, then your models are ready to be paginated. No configuration. Don't have to define anything in your models or helpers.
* Scope based simple API
2011-02-06 21:58:53 -05:00
Everything is method chainable with less Hasheritis. You know, that's the Rails 3 way.
2011-02-06 00:28:11 -05:00
No special collection class or something for the paginated values but uses a general AR::Relation instance. So, of course you can chain any other conditions before or after the paginator scope.
* Engine based customizable helper
As the whole pagination helper is basically just a collection of links and non-links, Kaminari renders each of them through its own partial template inside the Engine. So, you can easily modify their behaviour or style or whatever by overriding partial templates.
== Rails versions
3.0.x and 3.1
== Install
Put this line in your Gemfile:
gem 'kaminari'
Then bundle:
% bundle
== Usage
2011-02-06 21:58:53 -05:00
=== Query Basics
2011-02-06 06:17:30 -05:00
* Fetch the 7th page of the users (per_page = 25 by default)
2011-02-06 00:28:11 -05:00
2011-02-06 21:58:53 -05:00
User.page(7)
2011-02-06 00:28:11 -05:00
* Show a lot more users per each page (change the per_page value)
2011-02-06 21:58:53 -05:00
User.page(7).per(50)
=== Controllers
2011-02-05 08:32:10 -05:00
2011-02-06 00:28:11 -05:00
* Typically, your controller code will look like this:
2011-02-06 21:58:53 -05:00
@users = User.order(:name).page params[:page]
2011-02-06 00:28:11 -05:00
2011-02-06 21:58:53 -05:00
=== Views
* Just call the "paginate" helper
2011-02-06 00:28:11 -05:00
<%= paginate @users %>
2011-02-06 21:58:53 -05:00
* Specifing the "window" size
2011-02-06 00:28:11 -05:00
# "inner window" (4 by default)
<%= paginate @users, :window => 3 %>
# "outer window" (1 by default)
<%= paginate @users, :outer_window => 3 %>
# outer window can be separetely specified by "left", "right" (1 by default)
<%= paginate @users, :left => 0, :right => 2 %>
2011-02-06 21:58:53 -05:00
=== Customizing the pagination helper
* The generator
2011-02-06 00:28:11 -05:00
% rails g kaminari:views
Then edit the partials in your app's app/views/kaminari/ directory.
2011-02-06 21:58:53 -05:00
* For Haml users
Haml templates generator is also available by adding "-e haml" option.
% rails g kaminari:views -e haml
2011-02-06 00:28:11 -05:00
== Contributing to Kaminari
* Fork, fix, then send me a pull request.
== Copyright
2011-02-05 08:32:10 -05:00
2011-02-06 00:28:11 -05:00
Copyright (c) 2011 Akira Matsuda. See LICENSE.txt for further details.