Ruby on Rails

【Ruby on Rails】gem "kaminari" を使ってページネーションを実装

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}ページ目)")

-Ruby on Rails