29 votes

Rails dispose-t-il d'une solution de pagination intégrée ?

J'ai remarqué que des joyaux de pagination comme mislav-will_paginate sont assez populaires. Est-ce parce que Rails ne dispose pas d'une solution de pagination intégrée ou parce que la solution intégrée n'est pas très bonne ?

28voto

digitalpardoe Points 431

Dans Rails 2.0, la capacité de pagination d'ActionController a été supprimée et transformée en un plugin pour la rétrocompatibilité appelé "classic_pagination". Cependant, d'après mes recherches pour trouver une solution de pagination pour moi-même, le consensus semble être que l'utilisation de "classic_pagination" n'est pas optimale.

Après avoir regardé quelques podcasts et après plusieurs recommandations, j'ai choisi d'essayer le will_paginate et je n'ai pas regardé en arrière. Il est rapide, facile à utiliser et bien entretenu.

Je crois que même V2 de Searchlogic recommande son utilisation.

15voto

Evgeny Points 2765

Si vous utilisez Rails 3, le plugin Kaminari sera très pratique pour la pagination. Github Railscasts

8voto

workmad3 Points 12974

Rails intègre la pagination, mais il s'agit d'un module simple qui ne convient pas à tous les besoins. À moins que vous n'ayez des besoins spécifiques en matière de pagination, il devrait convenir à la plupart des usages.

Voici un bon article sur la façon d'utiliser la pagination dans Rails.

3voto

reto Points 4255

Je recommande searchlogic . Il est doté d'un système de pagination intégré et de nombreuses autres fonctionnalités intéressantes.

  • Filtrage facile
  • Pagination
  • Triage

Et pour tous ces gentils assistants.

Le code en dit plus que des milliers de mots ( Ne vous laissez pas déconcerter par l'exemple HAML, vous pouvez utiliser des modèles erb normaux si vous les préférez, le code et la structure sont les mêmes. ) :

Contrôleur :

  def index
    @search = User.new_search(params[:search])
    @users, @users_count = @search.all, @search.count
  end

La pagination dans la vue :

== Per page: #{per_page_select}
== Page: #{page_select}

Trier comme/par en vue :

  - unless @users_count.zero?
    %table
      %tr
        %th= order_by_link :account => :name
        %th= order_by_link :first_name
        %th= order_by_link :last_name
        %th= order_by_link :email
      - @users.each do |user|
        %tr
          %td= user.account? ? user.account.name : "-"
          %td= user.first_name
          %td= user.last_name
          %td= user.email

Des filtres faciles, simples et rapides :

  - form_for @search do |f|
    - f.fields_for @search.conditions do |users|
      = users.text_field :first_name_contains
      = users.date_select :created_after
      - users.fields_for users.object.orders do |orders|
        = orders.select :total_gt, (1..100)
    = f.submit "Search"

Et tout fonctionne ensemble, donc changer une page et ensuite le tri, et ajouter un filtre fonctionne sans perdre aucun des autres paramètres :).

Tout ce dont vous avez besoin se trouve dans votre environment.rb :

config.gem "searchlogic"

et l'installer avec : rake gems:install

Consultez également le exemple en ligne

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X