Rails

【Rails】kaminariのpageメソッドを用いて、配列のページャを作成する方法

Rails

 

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

Rails
【Rails】Kaminariを用いたページネーション機能まとめ!導入手順、デザインの変更、日本語化についてまとめて解説Kaminariを用いたページネーション機能の実装まとめを紹介しています。労力をかけず、簡単にページネーション機能を実装することができるため、ぜひ導入を検討してみてください。...

pageメソッドの一般的な使用方法

pageメソッドは一般的にはモデルにチェーンさせて使用します。

# ユーザーの7ページを取得する
User.page(7)

# ページネーションによってページを切り替える
User.page(params[:page])
ページ付けは、ページ0ではなくページ1から始まります(page(0)はpage(1)と同じ結果を返します)。

pageメソッドを配列に対して用いる

pageメソッドを配列(arrayオブジェクト)に対して用いるには、以下のようにKaminari::paginate_arrayを使用することで可能になります。

@paginatable_array = Kaminari.paginate_array(my_array_object).page(params[:page]).per(10)
Kaminari::paginate_arrayは配列オブジェクトをページ付け可能配列に変換してくれます。

 

実際に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値を指定することができる

参考

Kaminari

 

 

今回はページネーションを作成することができるgem「kaminari」のpageメソッドを配列に対して用いる方法について紹介しました。細かい部分にも対応しているKaminariに便利さに改めて気付かされましたね。