[Ruby on Rails 4] kaminari でページネーションを生成する
memo.
こちらを参考にさせて頂きました。
Contents
Installation
以下を追加して bundle install
gem 'kaminari'
config ファイルを生成する。
% bin/rails g kaminari:config
create config/initializers/kaminari_config.rb
config ファイルを読み込むためには Server を再起動する。
Usage
Controller
Controller の index アクションを変更する。
class ItemsController < ApplicationController
# GET /items
def index
@items = Item.all.page(params[:page])
end
View
index の View ファイル内で、ページネーションを表示したい箇所にタグを追加する。
= paginate @items
以上で動作する。
View に Theme を適用する
さらに Bootstrap 用の View を生成する。
テーマファイルが用意されている。便利。
% bin/rails g kaminari:views bootstrap3
downloading app/views/kaminari/_first_page.html.haml from kaminari_themes...
create app/views/kaminari/_first_page.html.haml
downloading app/views/kaminari/_gap.html.haml from kaminari_themes...
create app/views/kaminari/_gap.html.haml
downloading app/views/kaminari/_last_page.html.haml from kaminari_themes...
create app/views/kaminari/_last_page.html.haml
downloading app/views/kaminari/_next_page.html.haml from kaminari_themes...
create app/views/kaminari/_next_page.html.haml
downloading app/views/kaminari/_page.html.haml from kaminari_themes...
create app/views/kaminari/_page.html.haml
downloading app/views/kaminari/_paginator.html.haml from kaminari_themes...
create app/views/kaminari/_paginator.html.haml
downloading app/views/kaminari/_prev_page.html.haml from kaminari_themes...
create app/views/kaminari/_prev_page.html.haml
View の文言をカスタマイズする
i18n の日本語設定ファイルに追加する。
ja:
views:
pagination:
first: "« First"
last: "Last »"
previous: "‹ Prev"
next: "Next ›"
truncate: "…"
helpers:
page_entries_info:
one_page:
display_entries:
zero: "No %{entry_name} found"
one: "Displaying <b>1</b> %{entry_name}"
other: "Displaying <b>all %{count}</b> %{entry_name}"
more_pages:
display_entries: "Displaying %{entry_name} <b>%{first} - %{last}</b> of <b>%{total}</b> in total"
ルーティングの設定
こちらでルーティングの設定変更について触れられていた。
kaminariをBootstrap3、Rails4.2環境で使う![Ruby 2.3] – 酒と泪とRubyとRailsと
- SEO的に良い、ユーザーフレンドリーである
- params pageがURLセグメントの一部 => RailsのPageキャシュが有効に
デフォルトでは、下記の URI で遷移する。
http://localhost:3000/items?page=2
このルーティングを変更することで
resources :items do
get 'page/:page', :action => :index, :on => :collection
end
以下のように URI が整う。
http://localhost:3000/items/page/2