Paginação é um recurso simples e indispensável em qualquer aplicação séria. Em se tratando de Rails, a solução mais popular é a gem WillPaginate que basicamente adiciona o método “paginate_” aos models do ActiveRecord e fornece um helper para renderização dos links da paginação nas views.
Instalando a gem:
sudo gem install will_paginate
Para utilizar na aplicação, adicione no final do config/environment.rb:
require 'will_paginate'
Altere o controller para utilizar paginação:
def index @posts = Post.paginate :all, :page => params[:page], :per_page => 10 end
E adicione os links da paginação na view:
<%= will_paginate @posts %>
Pronto! Ao clicar nos links da paginação o parâmetro “page” será incluído automaticamente na requisição.
Legal, mas cadê o “ajax”?
Por padrão o WillPaginate não se preocupa com isso. O próprio desenvolvedor recomenda usar javascript para interceptar o “click” dos links e renderizar o resultado na mesma página.
Outra alternativa seria estender a classe responsável por renderizar os links da paginação para utilizar requisições com ajax.
Inclua em app/helpers o arquivo ajax_will_paginate.rb com o código:
class AjaxWillPaginate < WillPaginate::LinkRenderer
def prepare(collection, options, template)
@update = options[:update]
super
end
protected
def page_link(page, text, attributes = {})
@template.link_to_remote(text, {
:url => url_for(page),
:method => :get,
:update => @update
})
end
end
Então adicione no final do arquivo config/environment.rb:
WillPaginate::ViewHelpers.pagination_options[:renderer] = 'AjaxWillPaginate'
E altere a chamada do helper na view para:
<%= will_paginate @posts, :update => 'div_principal' %>
Informe na opção :update o Id de um objeto html que contenha todo o conteúdo da paginação que será substituído nas requisições seguintes.
É importante lembrar que esta solução altera o comportamento de todos os helpers de paginação da aplicação, por isso deve ser utilizada com cautela. Outras soluções parecidas podem ser encontradas aqui.

Pingback: Tweets that mention 1up4Developers » Blog Archive » Paginação no Rails com will_paginate e Ajax de modo fácil -- Topsy.com
Valeu, resolveu meus problemas!!
opa muito massa soh uma divida
eu tentei usar o will_paginate com ajax funcionou e tal porem quando eu coloquei em producao ele da um erro no aquivo
environment.erb
na linha do Paginate vc sabe pq ???
abraco parabes pelo post
estava faltando um plugin neh heheheh
abraco
valeu