Wenn eine Anwendung mehr Datensätze enthält, wird eine lange Liste schnell unübersichtlich. Mit dem b4um Generator lässt sich deshalb eine serverseitige Pagination zu einer bereits vorhandenen Ressource hinzufügen.
In diesem Tutorial erweitern wir unsere bestehende Product-Übersicht. Sie verwendet bereits die b4um Tabelle und die zuvor eingerichtete Suche.
Voraussetzungen
Für dieses Tutorial sollte bereits eine Product-Ressource vorhanden sein.
Unsere Produktübersicht enthält beispielsweise folgende Felder:
Die vorhandene Tabellenansicht muss dafür nicht verändert werden.
Unsere Produktdarstellung kann beispielsweise weiterhin so aussehen:
<%if@products.any? %><%= render "table", products: @products%><%else%><sectionclass="b4um-empty-state"><h2class="b4um-empty-state__title">
No products yet.
</h2><pclass="b4um-empty-state__text">
Create your first product to get started.
</p></section><%end%><%= render "shared/pagination", pagination: @pagination%>
Damit erscheint die Seitennavigation automatisch unterhalb der Produktliste.
5. Pagination testen
Starten wir die Anwendung:
bin/rails server
Anschließend öffnen wir:
http://localhost:3000/products
In unserem Beispiel befinden sich fünf Produkte in der Datenbank.
Da wir beim Generator
--per-page=3
angegeben haben, werden auf der ersten Seite drei Produkte angezeigt.
Die Pagination zeigt darunter die verfügbaren Seiten sowie die Navigation zur nächsten Seite an.
Beim Wechsel auf die zweite Seite ändert sich die URL beispielsweise zu:
/products?page=2
Auf Seite 2 werden nur noch die verbleibenden zwei Produkte angezeigt.
Zusätzlich erscheint die Navigation zurück zur vorherigen Seite.
6. Suche und Pagination kombinieren
Besonders praktisch ist, dass die b4um Pagination vorhandene Query-Parameter erhält.
Unsere Produkte besitzen beispielsweise alle den Status:
Verfügbar
Suchen wir nach:
verfügbar
finden wir weiterhin alle fünf Produkte.
Durch unsere Einstellung von drei Datensätzen pro Seite werden die Suchergebnisse ebenfalls auf zwei Seiten verteilt.
Auf Seite 1 erscheinen drei Treffer.
Nach einem Klick auf Next erscheinen auf Seite 2 die verbleibenden zwei Treffer.
Der Suchparameter bleibt dabei erhalten:
/products?commit=Search&page=2&q=verfügbar
Damit wird nicht die vollständige Produktliste paginiert, sondern weiterhin ausschließlich das Ergebnis der Suche.
Das zeigt gleichzeitig, dass die beiden b4um Generatoren miteinander kombiniert werden können:
b4um:search
↓
gefilterte Datensätze
↓
b4um:pagination
↓
aktuelle Seite
↓
Tabelle oder Bento-Ansicht
7. Eigene Seitengröße festlegen
Die Anzahl der Datensätze pro Seite kann bereits beim Generator festgelegt werden.
Damit können auch größere Datenmengen übersichtlich dargestellt, durchsucht und auf mehrere Seiten verteilt werden.
Im nächsten Schritt können wir die klassische Seitennavigation durch Infinite Scroll ersetzen. Dabei werden weitere Datensätze automatisch geladen, sobald der Benutzer nach unten scrollt.
Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren,
Funktionen für soziale Medien anbieten zu können und die Zugriffe auf
unsere Website zu analysieren.
Sie akzeptieren unsere Cookies, wenn Sie fortfahren diese Webseite zu
nutzen.
Datenschutzerklärung.