using kaminari or will_paginate

Kaminari
A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for Rails 3
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 required. Don’t have to define anything in your models or helpers.
Simple scope-based API

Everything is method chainable with less “Hasheritis”. You know, that’s the Rails 3 way. No special collection class or anything for the paginated values, instead using a general AR::Relation instance. So, of course you can chain any other conditions before or after the paginator scope.
Customizable engine-based I18n-aware 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, style or whatever by overriding partial templates.
ORM & template engine agnostic

Kaminari supports multiple ORMs (ActiveRecord, Mongoid, MongoMapper) and multiple template engines (ERB, Haml).
Modern

The pagination helper outputs the HTML5 tag by default. Plus, the helper supports Rails 3 unobtrusive Ajax.

Supported versions

  • Ruby 1.8.7, 1.9.2, 1.9.3 (trunk)
  • Rails 3.0.x, 3.1 (edge)
  • Haml 3
  • Mongoid 2
  • MongoMapper 0.9
  • DataMapper 1.1.0

Install

Put this line in your Gemfile:

gem 'kaminari'

next open your terminal and run bundle install

Configuring default per_page value for each model

paginates_per
You can specify default per_page value per each model using the following declarative DSL.

class User < ActiveRecord::Base
  paginates_per 50
end

Controllers

the page parameter is in params[:page]
Typically, your controller code will look like this:

@users = User.order(:name).page params[:page]

Views

the same old helper method
Just call the paginate helper:

<%= paginate @users %>

will_paginate

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

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

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 %>

You can customize the default “per_page” value:

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

# 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
Post.page(params[:page]).order('created_at DESC')
Advertisements

About me
Interested about Ruby on Rails

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: