👋

Rails(pagy)ページネーション

2024/02/07に公開

Rails7でページネーションを実装した際に遭遇した問題や手順について記載しますので誰かの参考になれば幸いです。

ページネーションとは

検索結果一覧やカテゴリ一覧などのリスト化された縦長ページを適度な長さに区切って複数ページに分割する機能のことを指します。

使用するもの

動画などではkaminariが紹介されていたが、サイトなどで検索をするとpagyの方が高速で効率が良いとのことだったので実装はpagyを使用します。

pegyはGemfileに記載をしたのちにbundle installでインストールしてください

データの準備方法

seedsを使用してデータの準備を行います。

db/seed.rb
if Rails.env = 'development'
  (1..50).each do |i|
    Board.create(author_name: "ユーザー#{i}", title: "タイトル#{i}", body: "本文#{i}")
  end
end

上記記載を追加する。

seeds.rbの実施方法
docker-composd exec web bundle exec rake db:seedを実行する
そうすると、データを作成することができる。

pagyの実装

https://zenn.dev/atelier_mirai/articles/44711464b137c5

上記の記事を参考にしてヘルパーファイルとアプリケーションコントローラにコードの追記を行う。

コントローラに下記記載を追加する記事などがあるが注意が必要です。

index.html.erb
<%= pagy_nav(@pagy) %>

pagy_nav(@pagy)ではHTMLのコードが画面表示されてしまうため'html_safe'を使用する必要があります。

pagy_nav(@pagy).html_safe
このようになりますが、このままではデザインが反映されていないので、bootstrapのデザインを反映させるためにpagy_bootstrap_navを使用します。

最終的には下記で、正常に動作しました。
pagy_bootstrap_nav(@pagy).html_safe

デザインの参考

https://qiita.com/Bjp8kHYYPFq8MrI/items/921a00fdb781163f0771

Discussion