Paginierung in Rails mit dem Gem will_paginate

Die Welt dreht sich immer schneller und diese Beschleunigung zeigt sich in allen Facetten unseres Lebens. Besonders im Geschäftsleben kommt es auf die Geschwindigkeit an. In dieser hektischen Beschleunigung ist die Volatilität die einzige Konstante und die Menschen haben eine große Affinität zu Dingen, die Zeit sparen können. Die Beliebtheit von Ruby on Rails ist auf die Tatsache zurückzuführen, dass das, was bei anderen Programmiersprachen Monate und Jahre dauern könnte, mit Ruby on Rails in Wochen und Tagen erstellt werden kann. Wie schafft es Ruby on Rails also, in so kurzer Zeit Anwendungen zu erstellen? Unter anderem sind Ruby-Gems einer der wichtigsten Faktoren, die dazu beitragen, dass Ruby on Rails den Entwicklungsaufwand reduziert. Bei diesen Edelsteinen handelt es sich um eine Liste kategorisierter wiederverwendbarer Codes, die den Entwicklern helfen, Anwendungen schneller zu erstellen. Einer der wichtigsten Edelsteine in der Horde von Edelsteinen ist der Paginierungsstein. Die Paginierung, ein wirklich wichtiger Aspekt jeder Webanwendung, hilft bei der Aufteilung von Dokumenten in einzelne Seiten. In Ruby on Rails können wir Daten einfach mit einem Gem namens „will_paginate“ paginieren. Mit der will_paginate-Bibliothek können Sie Rails-Apps (und anderen Ruby-Frameworks) mühelos Paginierungsfunktionen hinzufügen. will_paginate ist ein sehr gut gestaltetes Plugin. Neben der ActiveRecord-Objektintegration kann es auch in Arrays und jede Sammlung integriert werden.

Schritte zur Integration von will_paginate mit Rails :

Schritt 1 : Fügen Sie „gem will_paginate“ zu Ihrer Gemfile hinzu

Gemfile:

gem 'will_paginate', '~> 3.0'

Schritt 2 : Bundle-Installation

Führen Sie die „Bundle-Installation“ Ihres Rails-Projekts durch

Bundle-Installation:

Dieser Befehl muss im Rails-Anwendungsverzeichnis ausgeführt werden, wodurch das Gem „will_paginate“ in der Ruby-Umgebung installiert wird, sofern es noch nicht installiert ist. Wenn dieses Gem bereits in Ihrer Umgebung verfügbar ist, wird einfach die Gem-Rails-Anwendung verwendet.

Schritt 3 : Grundlegende Integration

Fügen Sie dem Modell, das nach dem paginierten Ergebnissatz abgefragt wird, einen Paginierungsparameter hinzu. Fügen wir nun unserer Anwendung eine Paginierung hinzu. Öffnen Sie Ihren Controller erneut und ändern Sie ihn so, dass er wie der folgende Code aussieht.

Controller-Code :

app/controllers/articles_controller.rb:

Klasse ArticlesController < ApplicationController

Def-Index

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

Ende

Ende

Es würde der folgenden Sammlung von Datensätzen erforderliche Parameter hinzufügen, um Paginierungslinks im Front-End (.erb) anzuzeigen. Hinzugefügte Parameter:

  • current_page – Dies ist die aktuelle Seitenzahl für den paginierten Ergebnisdatensatz
  • total_entries – Anzahl der Datensätze in der Datenbank, die die angegebenen Kriterien erfüllen
  • limit – pro Seite Limit für die paginierten Ergebnisdaten
  • Offset – aktueller paginierter Datensatz -> um die aktuelle Seite anzuzeigen

Parameter :

  • :page – Dies ist der Parameter, der in der Abfragezeichenfolge gesendet wird. Auf dieser Grundlage wird entschieden, welche Datensätze abgerufen werden sollen.
  • :per_page – Dies ist die Anzahl der Ergebnisse, die Sie pro Seite abrufen möchten

Code anzeigen :

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>

Standardansicht-Helfer :

Gibt HTML zurück, das Seitenlinks für ein WillPaginate::Collection-ähnliches Objekt darstellt. Falls insgesamt nicht mehr als eine Seite vorhanden ist, wird Null zurückgegeben.

  • :class – CSS-Klassenname für das generierte DIV (Standard: „Paginierung“)
  • : previous_label – Standard: „« Previous“
  • :next_label – Standard: „Weiter »“
  • :page_links – wenn false, werden nur vorherige/nächste Links gerendert (Standard: true)
  • :inner_window – wie viele Links rund um die aktuelle Seite angezeigt werden (Standard: 4)
  • :outer_window – wie viele Links befinden sich rund um die erste und die letzte Seite (Standard: 1)
  • :link_separator – String-Trennzeichen für Seiten-HTML-Elemente (Standard: einzelnes Leerzeichen)
  • :param_name – Parametername für Seitenzahl in URLs (Standard: :page)
  • :params – zusätzliche Parameter beim Generieren von Paginierungslinks (z. B. :controller => „foo“, :action => nil)
  • :renderer – Klassenname, Klasse oder Instanz eines Link-Renderers (Standard in Rails: WillPaginate::ActionView::LinkRenderer)
  • :container – schaltet die Darstellung des DIV-Containers für Paginierungslinks um, wird nur auf „false“ gesetzt, wenn Sie Ihr eigenes Paginierungs-Markup rendern (Standard: true)

Alle von will_paginate nicht erkannten Optionen werden zu HTML-Attributen im Containerelement für Paginierungslinks

<%= will_paginate @posts, :style => 'color:blue' %>
page_entries_info(Sammlung, Optionen)
Rendert eine Nachricht, die die Anzahl der angezeigten Einträge im Vergleich zur Gesamtzahl der Einträge enthält.

<%= page_entries_info @posts %>
#=> Anzeige der Beiträge 6 – 12 von insgesamt 26

  • :model – eine Modellklasse oder ein String-Name (Standard: Collection.first.class)
  • :html – auf „false“ setzen, um Klartext zu generieren (Standard: true)

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

Lesen Sie ähnliche Artikel:

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman