はじめに
Railsのgemであるkaminariを用いて、ページネーションを機能を実装した際の手順を、
備忘録としてまとめたいと思います。
実装手順
手順概要
-
kaminari
をGemに追加する - 設定ファイルを生成&設定を変更する
- テーマを生成する(任意)
- コントローラーのデータ取得の処理を修正する
- 表記を日本語化する
手順詳細
1. kaminari
をGemに追加する
以下の通り、Gemfileにkaminariを追加します。
gem 'kaminari'
以下のコマンドを実行して、インストールします。
bundle install
Docker上で開発している場合は、以下のコマンドを実行します。
docker-compose build
docker-compose build
を実行してもインストールされない場合は、以下のコマンドを実行します。
(webの部分はdocker-compose.ymlに記載の名前に変更して実行してください)
docker-compose exec web bundle install
これで、インストールが完了となりますので、次のステップへ進みます。
2. 設定ファイルを生成&設定を変更する
まず、設定ファイルを生成するため、以下のコマンドを実行します。
rails g kaminari:config
Docker上で開発している場合は、以下のコマンドを実行します。
docker-compose exec web rails g kaminari:config
実行するとconfig/initializers
ディレクトリにkaminari_config.rb
が生成されるので、ファイルを開きます。
今回は1ページに表示するデータの数を8個にしたかったので、以下のようにコードを追記しました。
(デフォルトの設定は25となっています。)
Kaminari.configure do |config|
config.default_per_page = 8
end
3. テーマを生成する(任意)
以下のコマンドを実行して、テーマを生成します。
デフォルトのページネーションのデザインでも良かったのですが、今回はbootstrap4のデザインを採用しました。
rails g kaminari:views bootstrap4
Docker上で開発している場合は以下のコマンドを実行します。
docker-compose exec web bunlde exec rails g kaminari:views bootstrap4
bootstrap4以外のテーマもありますので、気になる方はこちらから確認してみてください!
4. コントローラーのデータ取得の処理を修正する
ページネーションしたいデータを取得する際の処理を修正します。
以下参考例です。
class ProductsController < ApplicationContorller
def index
- @products = Product.all
+ @products = Product.page(params[:page])
end
end
ちなみに以下のようにper
を用いることで、ページネーションのデータ数の設定を上書きすることが可能です。
# データ数の上限を4に変更
@products = Product.page(1).per(4)
5. 表記を日本語化する
デフォルトでは日本語化されていないので、日本語で表記されるよう変更します。
config/locales
ディレクトリ内にあるapplication.rb
に以下を追記します。
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module Myapp
class Application < Rails::Application
config.load_defaults 7.0
+ config.i18n.default_locale = :ja
config.time_zone = 'Tokyo'
end
end
次にconfig/locales
ディレクトリにja.yml
を作成し、日本語化するための設定を記載します。
まず、以下のコマンドを実行してja.yml
ファイルを作成します。
touch config/locales/ja.yml
ja.yml
ファイルを作成したら、ファイルを開き以下を記載します。
ja:
views:
pagination:
first: '最初'
last: '最後'
previous: '前'
next: '次'
truncate: '...'
画面を開くと設定が反映され、日本語化されて表示されると思います。
以上で、kaminariの設定は終わりです。
最後に
kaminariの設定に関して、ざっくりとまとめてみました。
皆様の参考になりますと幸いです。