Will_paginate em português
Outra dica rápida de hoje, para você que está se aventurando no mundo Ruby on Rails (assim como eu), existe um plugin muito bom para realizar paginação de dados, chama-se will_paginate, existe uma infinidade de tutoriais sobre ele na internet, por isso vou explicar aqui diretamente o seu uso.
Vamos supor que temos uma aplicação de um blog em Rails, e que queremos fazer a paginação dos posts (estou considerando que já temos criado o Model, o Controller, uma View e que o plugin já está instalado).
Na action do controller (que eu chamei de list_posts):
def list_posts
@posts = Post.paginate :page => params[:page], :per_page => "10", :conditions => "status = 'A'", : order => "id DESC"
end
O parâmetro page identifica a página atual.
O parâmetro per_page indica o número de registros a serem exibidos por página.
Inventei uma condição status igual a A(ativo), imaginando que na tabela existisse um campo status.
E o order para aparecerem primeiro sem os ultimos posts.
Na view list_posts:
<% @posts.each do |post| %>
<div class="posts">
<%= link_to post.titulo, :controller => "posts", :action => "show_post", :id => post %>
</div>
<% end %>
<%= will_paginate @posts, :previous_label => "« Anterior", :next_label => "Próxima »" %>
Primeiro vem o looping para mostrar o titulo dos posts com um link para uma possivel action show_post, passando como parâmetro o id do post.
Depois o menu criado pelo plugin will_paginate, passando o previous e next label em português.
Muito possivelmente para funcionar esse link será necessário acrescentar a seguinte linha no arquivo de rotas:
map.connect 'posts/:id', :controller => 'posts', :action => 'show_post'
Posts relacionados:
Tags: Rails, ruby, Ruby on Rails, will_paginate, will_paginate portugues
Postado em sexta-feira, agosto 7th, 2009 at 18:18 na categoria Ruby on Rails. Siga o RSS 2.0 feed. You can leave a response, or trackback from your own site.
14/09/2009 as 21:23
Valeu pela dica!
10/11/2009 as 16:36
Obrigado pela Dica!!!
Só uma correção:
Para mudar o label Previous fica assim:
:prev_label => “« Anterior”
10/11/2009 as 17:12
Sergio,
esse parâmetro se chamava :prev_label nas versões do Rails 2.3.2 e anteriores, hoje estamos na versão 2.3.4 e agora se chama :previous_label
16/12/2009 as 14:37
Cara, muito show sua dica, estou iniciando agora em Ruby on Rails e tinha justamente essa dúvida, pois estava tentando colocar os parâmetros no controller e só dava erro. Na view funciona ok, e é realmente previous_label na versão que estou usando também… é isso aí, continue assim.