Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Chris Seelus

Min Read

02. Januar 2023

Ruby on Rails: Paginieren Sie statusbehaftete Tabs mit Pagy

In einem letzter Beitrag auf dem Imaginary Cloud-Blog Tiago sprach über Bezahlen, das neue leistungsstarke Kind auf dem Block, wenn es um die Paginierung in Rails (oder wirklich jedem Rack-basierten Ruby-Framework) geht.

Customized-Pagy-Navigation-Examples

Bei diesem Follow-up handelt es sich um eine Anleitung, bei der die integrierte kompakt Extra, das eine neue Art von Benutzeroberfläche bietet durch die pagy_nav_bootstrap_compact Helfer, der es ein wenig an unsere Bedürfnisse anpasst.

Ich werde eine kleine Beispiel-App mit einigen Testdaten verwenden, die mit dem Faker-Gem generiert wurden, um Pagys Fähigkeiten zu demonstrieren. Sie können sehen, was wir bauen und das untersuchen Code auf GitHub.

Neben dem Standard-Frontend-Helfer pagy_nav, was eine sehr einfache Paginierung generiert, es gibt zwei weitere (kompakt, Bootstrap), wenn Sie also eine andere Art der Paginierung verwenden oder auf Bootstrap verzichten möchten, ist das auch völlig in Ordnung.

blue arrow to the left
Imaginary Cloud logo

Installation

Fügen Sie zuerst Pagy zu Ihrem Gemfile hinzu und führen Sie es aus Bundle-Installation:

Fügen Sie die Daten der Anwendung zur Datenbank hinzu:

Erstellen Sie den zahl.rb Initialisierer für die App:


Binden Sie das Pagy-Backend in einen Controller ein, um es nur dort oder drinnen verfügbar zu machen Anwendungscontroller um es weltweit verfügbar zu machen:

Jetzt sind Sie so eingerichtet, dass Sie Ihre ActiveRecord-Sammlungen innerhalb von Controllern paginieren, zu denen das Pagy-Backend gehört, das wären alle Controller, die von Ihrem erben Anwendungscontroller wenn du es dort aufgenommen hast. Nehmen wir an, Sie haben eine Index-Aktion, die einen Weltraumnebel anzeigt, den Sie paginieren möchten. Sie könnten das so machen:

Binde das Frontend in einen Helfer ein oder in Anwendungshelfer um es weltweit verfügbar zu machen:

Um deinen paginierten Nebel√¶ zu rendern, kannst du jetzt einen der Frontend-Helfer von Pagys verwenden, etwa so:

Anpassen der Paginierung

In der Standardeinstellung pagy_nav_bootstrap_compact wird so etwas rendern:

Pagy Nav Bootstrap Compact

Sie können die Textbeschriftungen anpassen, wenn Sie erfordert 'payy/extra/i18n' Kopieren Sie in einem Initialisierer das Standard-Pagy-Wörterbuch in Ihr config/locales und ändern oder übersetzen Sie die Beschriftungen, wie Sie möchten.

Über den Initialisierer können Sie auch Optionen wie die Anzahl der Elemente pro Seite und vieles mehr festlegen.

Um das Styling anzupassen, können wir ein bisschen SASS verwenden:


Das wird @extend Stiefeletten btn-outline-dunkel Stil, ersetze den Text der vorherigen/nächsten Buttons durch Pfeilsymbole und gestalte den Eingang.

blue arrow to the left
Imaginary Cloud logo

Paginieren Sie mehrere Sammlungen gleichzeitig

Manchmal ist es notwendig, mehrere Sammlungen pro Controller-Aktion zu paginieren.

Im folgenden Beispiel rendere ich zwei Sammlungen, Stars & Nebulae, auf einer Seite in zwei Bootstrap-Tabs.

Mit Pagy ist es einfach, sie einzeln zu paginieren und zu navigieren.

In der Controller-Aktion, in der ich die Pagy-Sammlungen definiere, ist lediglich das Hinzufügen eines page_param mit einem Symbol meiner Wahl zu jeder Kollektion:


Jetzt stellt Pagy diesen Parameter automatisch den Navigationslinks voran und extrahiert sie beim Rendern einer Ansicht aus einer URL. Extrem einfach und bequem!

blue arrow to the left
Imaginary Cloud logo

Aufrechterhaltung des Staates

Um auch den Status des aktuell aktiven Tabs beizubehalten, können wir Pagys Option verwenden, um beliebige Parameter hinzuzufügen:


Dieser Parameter kann für Bootstraps-Registerkarten verwendet werden .nav-links und .tab-Bereich indem sie ihren aktiven Zustand mit einer Bedingung festlegen:


Wir können jetzt nicht nur für jeden Tab auf bestimmte Seiten verlinken, sondern auch den aktuell geöffneten Tab beibehalten, auch wenn Besucher Links zu unserer Website kopieren und einfügen. Ordentlich!

blue arrow to the left
Imaginary Cloud logo

Fazit

Wie ich hoffe, dieser Artikel hilft, hervorzuheben, ist Pagy nicht nur sehr performant (siehe vorheriger Beitrag über Pagy), aber auch sehr komfortabel zu bedienen und einfach zu personalisieren.

Dinge wie das Umbenennen des Seitenparameters sind meiner Meinung nach mit Pagy noch einfacher zu bewerkstelligen als mit will_paginate oder Kaminari.

Die Zeit wird zeigen, ob Pagy das Juwel der Wahl für Rails wird, wenn es um Paginierung geht. Ich denke sicherlich, dass es das Potenzial hat, genau das zu werden.

Bei Imaginary Cloud wir arbeiten mit einem breiten Tech-Stack, einschließlich Ruby on Rails. Wenn Sie in Ihrem Softwareentwicklungsprojekt Hilfe mit dieser oder ähnlichen Technologien benötigen, wartet ein Expertenteam auf Sie! Schreiben Sie uns eine Nachricht hier!

Ready for a UX Audit? Book a free call

Fanden Sie diesen Artikel hilfreich? Diese könnten dir auch gefallen!

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Chris Seelus
Chris Seelus

Ein Unternehmer aus Bayern, der derzeit an Web- und Mobile-App-Software für das Qualitätsmanagement arbeitet. Ich mag Ruby on Rails und React Native sehr.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon