今回はページネーションを作成することができるgem「kaminari」のpageメソッドを配列に対して用いる方法について紹介したいと思います。pageメソッドは基本的にはモデルを指定しますが、今回の方法を用いることで配列に対しても指定することができるようになります。

【Rails】Kaminariを用いたページネーション機能まとめ!導入手順、デザインの変更、日本語化についてまとめて解説Kaminariを用いたページネーション機能の実装まとめを紹介しています。労力をかけず、簡単にページネーション機能を実装することができるため、ぜひ導入を検討してみてください。...
pageメソッドの一般的な使用方法
pageメソッドは一般的にはモデルにチェーンさせて使用します。
# ユーザーの7ページを取得する
User.page(7)
# ページネーションによってページを切り替える
User.page(params[:page])
pageメソッドを配列に対して用いる
pageメソッドを配列(arrayオブジェクト)に対して用いるには、以下のようにKaminari::paginate_arrayを使用することで可能になります。
@paginatable_array = Kaminari.paginate_array(my_array_object).page(params[:page]).per(10)
実際にKaminari::paginate_arrayを用いて、ユーザー名の配列に対してページャを作成してみると以下のようになります。
users = User.all
users_array = users.map do |user|
user.name
end
@users = Kaminari.paginate_array(users_array).page(params[:page]).per(10)
以下のように、よりシンプルに記述することもできます。
users = User.all
users_array = users.map(&:title)
@users = Kaminari.paginate_array(users_array).page(params[:page]).per(10)
total_countを指定する
ハッシュオプションを使用することでtotal_countの値を指定することもできます。
@paginatable_array = Kaminari.paginate_array([], total_count: 145).page(params[:page]).per(10)
まとめ
- 一般的にpageメソッドはモデルに対して使用する
- pageメソッドを配列に使用するにはKaminari::paginate_arrayを用いる
- ハッシュオプションを使用することでtotal_count値を指定することができる
参考
今回はページネーションを作成することができるgem「kaminari」のpageメソッドを配列に対して用いる方法について紹介しました。細かい部分にも対応しているKaminariに便利さに改めて気付かされましたね。