掲示板のページネーション

♡実現したいこと

ページネーションとはそのまま、ページ機能を作ること。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 %>

表示位置は実際にブラウザ上で反映されたものを確認しながら、調整していく。