gem kaminariを使用しページネーションを実装
ページネーション
ページネーションとは検索結果や内容の多いページを分割して表示させ、見やすくすること
使用例↓
実装内容
掲示板一覧画面とブックマーク一覧画面にページネーションを実装。
ページネーションにはkaminariを使用し、1ページあたり20件の掲示板を表示させる。
bootstrap4で形成。
導入
gem 'kaminari'のインストール
gem 'kaminari'
bundle install
ページネーション設定ファイルの作成
$ rails g kaminari:config Running via Spring preloader in process 2147 create config/initializers/kaminari_config.rb
生成されたファイルを編集。
# frozen_string_literal: true Kaminari.configure do |config| config.default_per_page = 20 # config.max_per_page = nil # config.window = 4 # config.outer_window = 0 # config.left = 0 # config.right = 0 # config.page_method_name = :page # config.param_name = :page # config.max_pages = nil # config.params_on_first_page = false end
コメントアウトを外して使用する。
今回は1ページに20件の掲示板を表示させたいので20と指定する。
反映にはサーバーの再起動が必要。
bootstrapを適応
% rails g kaminari:views bootstrap4
このコマンドを実行するだけでページネーションに自動でbootstrapが適応される。
controller
page
メソッドが使用可能になっているので掲示板一覧とブックマーク一覧画面のアクションへ追記。
~ def index if logged_in? @boards = Board.all.includes(:user).order(created_at: :desc).page(params[:page]) else redirect_to login_path, danger: 'ログインしてください' end end def bookmarks @bookmark_boards = current_user.bookmark_boards.includes(:user).order(created_at: :desc).page(params[:page]) end ~
view
掲示板一覧、ブックマーク一覧のviewへpagenateヘルパーのを記述。
paginateでコントローラの@boards
と@bookmark_boards
を呼び出す。
~
<%= paginate @boards %>
~
~
<%= paginate @bookmark_boards %>
~