Kontakt os


02 januar 2023
•
I en seneste indlæg på bloggen Imaginary Cloud, Tiago talte om Pagy, det nye højtydende barn på blokken, når det kommer til paginering i Rails (eller egentlig enhver rackbaseret Ruby-ramme).

Denne opfølgning er en vejledning, der bruger den indbyggede kompakt ekstra, der tilbyder en ny slags UI gennem pagy_nav_bootstrap_compact hjælper, der tilpasser den lidt til vores behov.
Jeg bruger en lille prøveapp med nogle testdata genereret med Faker-perlen for at demonstrere Pagys evner. Du kan se, hvad vi bygger og inspicerer kode på GitHub.
Udover standardfrontend-hjælperen page_nav, som vil generere meget grundlæggende paginering, der er to andre (kompakt, bootstrap), så hvis du vil bruge en anden form for paginering eller gå uden Bootstrap, er det også helt fint.
Først skal du tilføje Pagy til din Gemfile og køre bundtinstallation:
Føj programmets data til databasen:
Opret side.rb initialiserer til appen:
Inkluder Pagy-backend i en controller for at gøre den tilgængelig lige der eller inde ApplikationController for at gøre det tilgængeligt globalt:
Nu er du indstillet til at paginere dine ActiveRecord-samlinger inde i controllere, der inkluderer Pagy-backend, som ville være alle controllere, der arver fra din ApplikationController hvis du inkluderede det der. Lad os sige, at du har en indekshandling, der viser noget rumtåge√¶, som du vil paginere, du kan gøre det på denne måde:
Inkluder frontend i en hjælper eller i ApplikationHelper for at gøre det tilgængeligt globalt:
For at gengive din paginerede nebul√¶ kan du nu bruge en af Pagys frontend-hjælpere, som sådan:
Som standard pagy_nav_bootstrap_compact vil gengive noget som dette:

Du kan tilpasse tekstetiketterne, hvis du kræver 'pagy/ekstra/i18n' i en initializer skal du kopiere standard Pagy-ordbogen til din konfiguration/lokaliteter og ændre eller oversætte etiketterne, som du vil.
Via initialisatoren kan du også indstille indstillinger som antallet af elementer pr. Side og meget mere.
For at tilpasse stylingen kan vi bruge lidt SASS:
Dette vil @extend Støvlestropper btn-outline-mørk stil, udskift teksten på forrige/næste knapper med pilikoner og stil input.
Nogle gange er det nødvendigt at paginere flere samlinger pr. controller-handling.
I det følgende eksempel gengiver jeg to samlinger, Stars & Nebulae, på en side inde i to Bootstrap-faner.
Med Pagy er det nemt at paginere og navigere hver af dem separat.
Inde i controller-handlingen, hvor jeg definerer Pagy-samlingerne, er alt, hvad der er nødvendigt, tilføjelsen af en side_parameter med et symbol efter eget valg til hver samling:
Nu tilføjer Pagy automatisk denne parameter til navigationslinkene samt udtrækker dem fra en URL, når du gengiver en visning. Ekstremt let og praktisk!
For også at opretholde den tilstand, der aktuelt er aktiv, kan vi bruge Pagys mulighed for at tilføje vilkårlige parametre:
Denne parameter kan bruges til Bootstraps-faner .nav-links og .tab-panel ved at indstille deres aktive tilstand med en betinget:
Vi kan nu ikke kun linke til bestemte sider for hver fane, men også opretholde den aktuelt åbne fane, selv når besøgende kopierer og indsætter links til vores websted. Pænt!
Som jeg håber, at denne artikel hjælper med at fremhæve, er Pagy ikke kun meget ydende (se Forrige indlæg om Pagy) men også meget behagelig at bruge og let at tilpasse.
Ting som at omdøbe sideparameteren er efter min mening endnu mere ligetil at gøre med Pagy end med will_paginate eller Kaminari.
Tiden vil vise, om Pagy bliver den foretrukne perle for Rails, når det kommer til paginering, jeg tror bestemt, at det har potentiale til at blive netop det.
Ved Imaginær sky vi arbejder med en bred teknisk stak, inklusive Ruby on Rails. Hvis du har brug for hjælp til denne teknologi eller lignende i dit softwareudviklingsprojekt, har vi et team af eksperter, der venter på dig! Send os en linje her!

Fandt du denne artikel nyttig? Du kan måske også lide disse!

En iværksætter fra Bayern, der i øjeblikket arbejder på web- og mobilappbaseret software til kvalitetsstyring. Virkelig glad for Ruby on Rails og React Native.
People who read this post, also found these interesting:
