Pagination dans Rails avec la gemme will_paginate

Le monde tourne de plus en plus vite et cette accélération est évidente dans toutes les facettes de nos vies. Surtout lorsqu’il s’agit d’affaires, la priorité est à la vitesse. Dans cette frénésie accélérée, la volatilité est la seule constante et les gens ont une grande affinité pour les choses qui peuvent faire gagner du temps. La popularité de Ruby on Rails est due au fait que ce qui pourrait prendre des mois et des années pour que d'autres langages de programmation soient réalisés peut être construit en quelques semaines et quelques jours avec Ruby on Rails. Alors, comment Ruby on Rails parvient-il à créer des applications en si peu de temps ? Entre autres choses, les gemmes Ruby sont l’un des facteurs les plus importants permettant à Ruby on Rails de réduire les frais généraux de développement. Ces gemmes sont une liste de codes réutilisables catégorisés aidant les développeurs à créer des applications plus rapidement. L’une des gemmes les plus importantes parmi une horde de gemmes est la gemme de pagination. La pagination, qui est un aspect très important de toute application Web, aide à diviser les documents en pages distinctes. Dans Ruby on Rails, nous pouvons facilement paginer des données à l'aide d'une gemme appelée « will_paginate ». La bibliothèque will_paginate facilite l'ajout de fonctionnalités de pagination aux applications Rails (et autres frameworks Ruby). will_paginate est un plugin très bien conçu. Outre l'intégration d'objets ActiveRecord, il peut s'intégrer à un tableau et à n'importe quelle collection.

Étapes d'intégration de will_paginate avec Rails :

Étape 1 : Ajoutez « gem will_paginate » dans votre Gemfile

Fichier gemme :

gemme 'will_paginate', '~> 3.0'

Étape 2 : Installation groupée

Effectuez une « installation groupée » de votre projet Rails

Installation groupée :

Cette commande doit être exécutée dans le répertoire de l'application Rails qui installera gem 'will_paginate' dans l'environnement Ruby si elle n'est pas déjà installée. Si cette gemme est déjà disponible dans votre environnement, elle utilisera simplement l'application Rails de la gemme.

Étape 3 : Intégration de base

Ajoutez un paramètre de pagination au modèle interrogé pour le jeu de résultats paginé. Maintenant, ajoutons la pagination à notre application. Ouvrez à nouveau votre contrôleur et modifiez-le pour qu'il ressemble au code ci-dessous.

Code du contrôleur :

app/controllers/articles_controller.rb :

classe ArticlesController <ApplicationController

indice déf

@articles = Blog.paginate(:page => params[:page], :per_page => 10)

fin

fin

Cela ajouterait les paramètres requis dans la collection d'enregistrements suivante pour afficher les liens de pagination dans le front-end (.erb). Paramètres ajoutés :

  • current_page – il s'agit du numéro de page actuel pour l'ensemble de données de résultats paginés
  • total_entries – nombre d'enregistrements dans la base de données qui satisfont aux critères donnés
  • limit – limite par page pour les données de résultat paginées
  • offset – ensemble de données paginées actuelles -> pour afficher la page actuelle

Paramètres :

  • :page – Il s’agit d’un paramètre envoyé dans la chaîne de requête. Sur cette base, les enregistrements à récupérer sont décidés.
  • :per_page – Il s’agit du nombre de résultats que vous souhaitez récupérer par page

Voir le code :

app/views/articles/index.html.erb

<div class="”row" margin-twenty5-zero margin-b-zero pagination-row”>

<div class="”col-lg-8" col-md-8 col-sm-7 col-xs-6 padding-zero”>

  • <%= will_paginate(@articles,:previous_label => ««», :next_label => «»»,:class=>»small-font»,:outer_window => 1,:inner_window => 0) %>

</div>

<div class="”col-lg-4" col-md-4 col-sm-5 col-xs-6 pagination-info”>

<span class="”pull-right”"><%= page_entries_info(@articles) %></span>

</div>

</div>

Assistants de vue standard :

Renvoie le HTML représentant les liens de page pour un objet de type WillPaginate::Collection. S’il n’y a pas plus d’une page au total, zéro est renvoyé.

  • :class – Nom de classe CSS pour le DIV généré (par défaut : « pagination »)
  • :previous_label – par défaut : « « Précédent »
  • :next_label – par défaut : « Suivant » »
  • :page_links – lorsque faux, seuls les liens précédents/suivants sont affichés (par défaut : vrai)
  • :inner_window – combien de liens sont affichés autour de la page actuelle (par défaut : 4)
  • :outer_window – combien de liens se trouvent autour de la première et de la dernière page (par défaut : 1)
  • :link_separator – séparateur de chaîne pour les éléments HTML de la page (par défaut : espace simple)
  • :param_name – nom du paramètre pour le numéro de page dans les URL (par défaut : page)
  • :params – paramètres supplémentaires lors de la génération de liens de pagination (par exemple :controller => « foo », :action => nil)
  • :renderer – nom de classe, classe ou instance d'un moteur de rendu de lien (par défaut dans Rails : WillPaginate::ActionView::LinkRenderer)
  • :container – bascule le rendu du conteneur DIV pour les liens de pagination, défini sur false uniquement lorsque vous affichez votre propre balisage de pagination (par défaut : true)

Toutes les options non reconnues par will_paginate deviendront des attributs HTML sur l'élément conteneur pour les liens de pagination

<%= will_paginate @posts, :style => 'color:blue' %>
page_entries_info(collection, options)
Affiche un message contenant le nombre d'entrées affichées par rapport au nombre total.

<%= page_entries_info @posts %>
#=> Affichage des messages 6 à 12 sur 26 au total

  • :model – une classe de modèle ou un nom de chaîne (par défaut : collection.first.class)
  • :html – défini sur false pour générer du texte brut (par défaut : true)

GitHub : https://github.com/mislav/will_paginate

Lire des articles similaires :

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench