ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Ruby on Rails】kaminari でページネーションを実装してみる

「kaminari」とは、ruby の gemの一つでページネーションを実装するものです。

今回は以下の赤枠のようなページネーションを実装するイメージです。
f:id:a1026302:20210202190119p:plain

gem でインストール

「Gemfile」の一番下に「gem 'kaminari'」を追加します。

# ページネーション
gem 'kaminari'

ターミナルで「bundle install」を実行します。

kaminariの設定ファイル生成

kaminariの設定ファイルを生成します。

$ bundle exec rails g kaminari:config

Running via Spring preloader in process 49
      create  config/initializers/kaminari_config.rb

kaminariのViewファイル生成
kaminariのViewファイルを生成します。

bundle exec rails g kaminari:views bootstrap4
      downloading app/views/kaminari/_first_page.html.erb from kaminari_themes...
      create  app/views/kaminari/_first_page.html.erb
      downloading app/views/kaminari/_gap.html.erb from kaminari_themes...
      create  app/views/kaminari/_gap.html.erb
      downloading app/views/kaminari/_last_page.html.erb from kaminari_themes...
      create  app/views/kaminari/_last_page.html.erb
      downloading app/views/kaminari/_next_page.html.erb from kaminari_themes...
      create  app/views/kaminari/_next_page.html.erb
      downloading app/views/kaminari/_page.html.erb from kaminari_themes...
      create  app/views/kaminari/_page.html.erb
      downloading app/views/kaminari/_paginator.html.erb from kaminari_themes...
      create  app/views/kaminari/_paginator.html.erb
      downloading app/views/kaminari/_prev_page.html.erb from kaminari_themes...
      create  app/views/kaminari/_prev_page.html.erb

ページネーション定義

コントローラは以下のように定義します。

def index
    @users = User.page(params[:page]).per(10)
end

perメソッドの引数は、次のページを増やすまでのレコード数の指定になります。


ビューファイルでページネーションを表示する部分は以下のように定義します。

<%= paginate @users %>