Help us understand the problem. What is going on with this article?

kaminariを使って配列に対してのページャーを作成する

More than 5 years have passed since last update.

kaminariとは

kaminariはRailsでページャを作成する際に、コードを数行追加するだけで簡単にページャーが作成できる非常に便利なgemです。

kaminari の使い方

kaminariの使い方はgithubのREADMEを読めばなんとなく理解できると思いますが、簡単に説明したいと思います。

インストール

# Gemfile

gem 'kaminari'
bundle install --path ./vendor/bundler

これで使う準備はOKです。
次にページャーを使用したいモデルに設定を追加します。
今回はサンプルとして Userモデルを使用したいと思います。

ユーザーモデルに下記を追加します。

# app/models/user.rb

default_scope :order => 'created_at DESC'
paginates_per 4

これは、kaiminariをとしてUserを4つずつ新しい順に取得するというものです。

そして、このページャーを使用したいページのController部分に下記を追加します。
サンプルとして home_controller とします。

# app/controllers/home_controller.rb

def index
  @user = User.page params[:page]
end
# app/views/home/index.html.erb

<% @user.each do |user| %>
<p> <%= user.name %></p>
<% end %>

%= paginate @user %>

これでページャー付きの画面ができたと思います。

ここまでは普通のkaminariの使い方だと思います。

配列に対して kaminari を使用する

耐えばcontroller側で下記のような配列を作成したとします。
( あくまでサンプルなので。 いい例が思いつかなかった..orz)

# app/controllers/home_controller.rb

@array = []
users = User.all
users.each do |user|
  array.push({
      name: user.name,
      foo: user.hoge.first.foo
  })
end

このとき @array に対してページャを実装しようとしたら結構面倒くさいと思います。
が、kaminariのpaginate_arrayメソッドを使用したら綺麗に記述できました。

array = []
users = User.all
users.each do |user|
  array.push({
      name: user.name,
      foo: user.hoge.first.foo
  })
end

@hoge = Kaminari.paginate_array(array).page(params[:page]).per(4)
<%= paginate @hoge %>

こうすることでarrayオブジェクトに対して簡単にページャーを実装することができます。

すごい kaminari!!

参考リンク

それはBlog:kaminariのpage_arrayが便利

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away