Railsでページネーションを作成したいときは、gem kaminari を使うのが便利です。
gem kaminari をインストール
Gemfile
に下記を追加して、おなじみのbundle install
を叩く
gem 'kaminari'
kaminari の 設定方法
※ 下記例は、Ransack と組み合わせている
コマンドを叩くよ
$ rails g kaminari:config
In your Controller
ページ番号は params[:page]
に格納されているので、コントロラーで page
メソッドに渡してあげる
class HogesController < ApplicationController
def index
@q = Hoge.ransack.page(params[:page]).per(10)
@hoges = @q.result(distinct: true)
end
end
In your View
pagenate
メソッドが用意されている
%ul
- @hoges.each do |hoge|
%li
= link_to hoge_path(hoge) do
= hoge.name
= paginate @hoges
番外編: haml + Bootstrap4 を使う場合
便利なコマンドがある
$ rails g kaminari:views bootstrap4 -e haml
あっという間に、ページネーション機能を実装できる
〇◯を実装したいな
View側で現在のページ番号を知りたいな
例えば、ページネーションしているページのタイトルタグに〇〇ページ目とつけたいときとか
〇〇ページ目みたいなのは、ヘルパーで共通化したほうがよさそう
- set_meta_tags title: t('.title', prefecture_name: @prefecture.name, page_num: "(#{@hoges.current_page}ページ目)")