[Ruby on Rails] Introduction de la fonction de pagination

Cible

Créez une fonction de pagination et Empêche le ralentissement de la vitesse de chargement des images lors de l'affichage d'une liste

Environnement de développement

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

supposition

Cette fois, nous allons introduire gem'kaminari 'et implémenter la fonction de pagination.

Flux jusqu'à l'introduction du kaminari

Gemfile


gem 'kaminari','~> 1.2.1'

Terminal


$ bundle install
$ rails g kaminari:config
$ rails g kaminari:views default

Ceci termine l'installation.

Comment utiliser

Je vais vous présenter ceux que j'utilise souvent personnellement. https://github.com/kaminari/kaminari L'utilisation détaillée est décrite ici, donc Si vous êtes intéressé, veuillez voir ici. Cependant, tout est en anglais.

Pagination de base

Installez les éléments suivants à l'endroit où vous souhaitez paginer Vous trouverez également des liens vers les pages 1 et 2 et à côté de cet emplacement.

erb:app/views/homes/index.html.erb


<%= paginate @posts %>

La pagination peut être implémentée en écrivant le contrôleur de cette manière.

app/controllers/homes_controller.rb


@posts = posts.page(params[:page])
Supplément [page (params [: page])] Il est normal de penser que page (params [: page]) ≒ tout.

Tri de la pagination

Il est possible d'inverser l'ordre en ajoutant une note à la description du contrôleur.

app/controllers/homes_controller.rb


@posts = posts.page(params[:page]).reverse_order

Spécifiez le nombre d'éléments à afficher par page

config/initializers/kaminari_config.rb


  Kaminari.configure do |config|
    config.default_per_page = 5 #Spécifiez le nombre maximum d'éléments pouvant être affichés par page pour toutes les pages qui utilisent le kaminari avec ce nombre.
  end

Afficher individuellement Lors de la spécification du nombre d'éléments à afficher par page

app/controllers/homes_controller.rb


@posts = posts.page(params[:page]).per(10)
Supplément [Priorité d'affichage] Comme la priorité est donnée au nombre dans kaminari_config.rb, kaminari_config.rb >= homes_controller.rb Veuillez indiquer la supériorité ou l'infériorité de ces nombres.

Changer l'affichage

Si vous voulez changer suivant, dernier, etc.

Introduction de 1 gem'rails-i18n ' 2 Créez un fichier config / locals / ja.yml 3 Modifier ja.yml

Si vous faites ce qui précède, c'est OK. [Référence de ja.yaml]

ja.yaml


ja
  views:
    pagination:
      first: "≪"
      previous: "<"
      next: ">"
      last: "≫"

Lors de l'application à un tableau

Lors de la mise en œuvre avec la méthode ci-dessus, si la valeur est un tableau, elle ne sera pas affichée, donc Il doit être décrit comme suit.

app/controllers/homes_controller.rb


@posts = Kaminari.paginate_array(Tableau).page(params[:page])

Description réelle: [Ruby on Rails] Affichage du classement (total, valeur moyenne)

Autres fonctions

[Rails] Aller automatiquement à la page suivante! !! Défilement infini de pagination avec jscroll

Il y en a beaucoup d'autres, donc si vous êtes intéressé, veuillez le vérifier.

Résumé

L'introduction elle-même n'est pas si difficile, mais sans la fonction de pagination Au fur et à mesure que le site se développe, il se charge lentement et est inutilisable, Une sorte de fonction de pagination est essentielle.

De plus, sur Twitter, les technologies et les idées qui n'ont pas été téléchargées sur Qiita sont également téléchargées, donc Je vous serais reconnaissant si vous pouviez me suivre. Cliquez ici pour plus de détails https://twitter.com/japwork

Recommended Posts