tuto – rails – pagination

Pouvoir paginer dans une view sur une appli rails, c’est toujours nécessaire quand on liste des items qui sont nombreux. Si vous ne savez pas ce que signifie paginer (ce dont je doute fort..), c’est le fait pouvoir lister des items (ex : des produits) sur plusieurs pages avec un nombre définis d’items par page (10 produits par page par exemple). Voici le gem fait pour vous : will paginate.

 

Première chose on ajoute le gem dans le Gemfile et bundle install ensuite :

gem 'will_paginate', '~> 3.0.2'

Je crois qu’il y avait un souci à la base et qu’il a fallut spécifier la version du gem à prendre en compte (3.0.2).

 

Dans votre controller d’objet, rien de plus simple :

@objects =  objects.paginate(:page => params[:page],:order=>"created_at DESC",:per_page => 10)

Dans l’exemple ci-dessus on voit la clé de hash :per_page qui donne évidement le nombre max d’items à afficher par page.

 

Enfin dans votre view (celle de l’objet en question) :

<% @objects.each do |object| %>
  <tr>
     <td width="250"><%= object.field_1 %></td>
  </tr>
<% end %>
<%= will_paginate @objects, :page_links => false %>

on affiche le premier « paquet » d’objets récupérés (par 10 dans notre exemple), et on affiche la pagination (page 1, page 2,…) s’il y a plus de 10 objets.

Vous voilà fin prêt à afficher vos produits en vente par paquet de 5, 10 ou 20 par pages !