Kaminariでページネーション機能を作成
まずは、gemをインストールする
gem 'kaminari', '~> 1.2.0'
このgemを追加することによって、以下のメソッドを使用できるようになる。
メソッド | 説明 |
---|---|
pageメソッド | 引数に現在のページ数を渡す |
perメソッド | 引数に何件でページを分割するかを渡す |
まずコントローラーでページネーションをつけたいデータに
.page(params[:page])
を追加する。
app/controllers/users_controller.rb
def index
@posts = Post.all.page(params[:page])
#デフォルトでは25件なので、例えば10件ずつにしたい場合
@posts = Post.all.page(params[:page]).per(10)
end
次に、ビューでページネーションを表示させたい箇所に
<%= paginate @posts %>
を追加する。
app/views/posts/index.html.erb
<h1>投稿一覧</h1>
<ul>
<% @posts.each do |post| %>
<li><%= post.content %></li>
<% end %>
</ul>
<%= paginate @posts %>
日本語化に対応
config/application.rbのmoduleにconfig.i18n.default_locale = :ja
config/application.rb
略
module MyAppName
class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
config.i18n.default_locale = :ja ⇦ここを追加
end
end
こちらの記事から引用させていただきました。
以下はより詳細な設定が書かれています。
https://qiita.com/rio_threehouse/items/313824b90a31268b0074