[Ruby on Rails 4] kaminari でページネーションを生成する

memo.

[markdown]
こちらを参考にさせて頂きました。

> * [kaminariをBootstrap3、Rails4.2環境で使う![Ruby 2.3] – 酒と泪とRubyとRailsと](http://morizyun.github.io/blog/kaminari-gem-paginator-rails/)
> * [Railsでkaminariを使ってページネーションを実現する – Rails Webook](http://ruby-rails.hatenadiary.com/entry/20141113/1415874683)

## Installation

以下を追加して `bundle install`

> * [kaminari/kaminari: ⚡ A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for Ruby webapps](https://github.com/kaminari/kaminari)

“`ruby:Gemfile
gem ‘kaminari’
“`

config ファイルを生成する。

“`
% bin/rails g kaminari:config
create config/initializers/kaminari_config.rb
“`

config ファイルを読み込むためには Server を再起動する。

## Usage

### Controller

Controller の index アクションを変更する。

“`ruby:items_controller.rb
class ItemsController < ApplicationController # GET /items def index @items = Item.all.page(params[:page]) end ``` ### View index の View ファイル内で、ページネーションを表示したい箇所にタグを追加する。 ```haml:index.html.haml = paginate @items ``` 以上で動作する。 ### View に Theme を適用する さらに Bootstrap 用の View を生成する。 テーマファイルが用意されている。便利。 > [amatsuda/kaminari_themes](https://github.com/amatsuda/kaminari_themes)

“`
% 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 の日本語設定ファイルに追加する。

> [kaminari/kaminari: I18n and Labels](https://github.com/kaminari/kaminari#i18n-and-labels)

“`yaml:conifg/locales/ja.yml
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 1 %{entry_name}”
other: “Displaying all %{count} %{entry_name}”
more_pages:
display_entries: “Displaying %{entry_name} %{first} – %{last} of %{total} in total”
“`

### ルーティングの設定

こちらでルーティングの設定変更について触れられていた。

> [kaminariをBootstrap3、Rails4.2環境で使う![Ruby 2.3] – 酒と泪とRubyとRailsと](http://morizyun.github.io/blog/kaminari-gem-paginator-rails/)
>
> * SEO的に良い、ユーザーフレンドリーである
> * params pageがURLセグメントの一部 => RailsのPageキャシュが有効に

デフォルトでは、下記の URI で遷移する。

“`
http://localhost:3000/items?page=2
“`

このルーティングを変更することで

> [ルーティングにアクションを追加 – Ruby on Rails入門](http://www.rubylife.jp/rails/routing/index6.html)

“`ruby:config/routes.rb
resources :items do
get ‘page/:page’, :action => :index, :on => :collection
end
“`

以下のように URI が整う。

“`
http://localhost:3000/items/page/2
“`

## 補遺

* [gems: will_paginate | deadwood](https://www.d-wood.com/blog/2013/09/06_4575.html)
[/markdown]