掲示板のページネーション
♡実現したいこと
ページネーションとはそのまま、ページ機能を作ること。google検索をしたときに下にある、1.2.3...のようなもの。
今回の場合は掲示板を何件か表示したら(例えで今回は10件)、次のページに移動して、また10件表示させる。
♡手順
①gemのkaminariをインストール
②kaminariの設定ファイルを作成後、設定する
③ページネーションしたいビューに関連するコントローラーの修正(今回はboard一覧なのでapp/controllers/boards_controller.rb)
④実際に表示したいビューに追記して反映していく
手順は以下にも詳細に載っている↓
https://github.com/kaminari/kaminari#configuring-kaminari
①gemのkaminariをインストール
Gemfileに
gem 'kaminari'
を追記し、bundle installする。
②kaminariの設定ファイルを作成後、設定する
ターミナルで
rails g kaminari:config
すると、config/initializers下にkaminari_config.rbが作成される。
config/initializers/kaminari_config.rbを開いて、実際に設定をしていく。
全てコメントアウトされた状態なので、使いたい部分(今回はページ毎に何個表示したいか)をコメントアウトして設定をしていく。
今回は例として10件にしたいので以下のように記載する。
config.default_per_page = 10
③ページネーションしたいビューに関連するコントローラーの修正(今回はboard一覧なのでapp/controllers/boards_controller.rb)
すでに作成しているapp/controllers/boards_controller.rbに追記をしていく。
今回は.page(params[:page])
のみ追記する。表示の都合上折り返すが、一文になっている。
def index
@boards = Board.all.includes(%i[user bookmarks])
.order(created_at: :desc).page(params[:page])
end
④実際に表示したいビューに追記して反映していく
今回は掲示板一覧を10件ごとに表示していきたいので、app/views/boards/index.html.erbに以下の内容を追加していく。
<%= paginate @boards %>
表示位置は実際にブラウザ上で反映されたものを確認しながら、調整していく。