👋
Rails(pagy)ページネーション
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の実装
上記の記事を参考にしてヘルパーファイルとアプリケーションコントローラにコードの追記を行う。
コントローラに下記記載を追加する記事などがあるが注意が必要です。
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
デザインの参考
Discussion