##基本
Gemfile
gem 'kaminari'
$ bundle install
Controller
def hoge
@users = User.page(params[:page]).per(10)
end
View
<%= paginate @users %>
##日本語化
localeファイルを作り、以下を記述。
config/locales/kaminari_ja.yml
ja:
views:
pagination:
first: "« 最初"
last: "最後 »"
previous: "‹ 前"
next: "次 ›"
truncate: "..."
helpers:
page_entries_info:
one_page:
display_entries:
zero: ""
one: "<strong>1-1</strong>/1件中"
other: "<strong>1-%{count}</strong>/%{count}件中"
more_pages:
display_entries: "<strong>%{first}-%{last}</strong>/%{total}件中"
##設定ファイルを作成
rails g kaminari:config
config/initializer/kaminari_config.rb
Kaminari.configure do |config|
config.default_per_page = 10
# 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.params_on_first_page = false
end
config.default_per_page = 10
を設定することで、Controller内の.per(10)
を省略できるようになります。(サーバーを再起動しないと反映されなかったので注意)
config/initialize
やconfig/locales
以下のファイルを変更した時は、再起動が必要みたいです。
Controller
def hoge
@users = User.page(params[:page])
end
その他のオプションに関してはこちらの記事を参照。
##表示する項目を変更
rails g kaminari:views default
app/views/kaminari
以下に7つのファイルが生成されます。
主となるファイルは_paginator.html.erb
で、主にこのファイルを編集することになります。不要な項目を削除しましょう。
##API
@item.total_count #=> レコード総数
@item.offset_value #=> オフセット
@item.num_pages #=> 総ページ数
@item.per_page #=> 1ページごとのレコード数
@item.current_page #=> 現在のページ
@item.first_page? #=> 最初のページならtrue
@item.last_page? #=> 最後のページならtrue
##◯位
とかを表示したい
.each.with_index
と.offset_value
を組み合わせて実装。
View
<% @items.each.with_index(@items.offset_value + 1) do |value, index| %>
<span><%= index %>位</span>
<p><%= value.name %></p>
<% end %>