Gemを使ったページネーションの追加方法


ページネーションとは

縦に長いページがあった時、複数のページに分割して表示で切るようにするすることで、Googleサイトを例にすると一番下に出てくるページ数のことです。

下図に参考画像載せます。

Railsを使ってページネーションを追加するには

Gemをインストールしてページネーション機能を簡単に追加することができますのでこれから手順を書いていきます。

追加手順

①Gemfileに「gem kaminari」を記述して、ターミナルで「bundle install」する

#一番下の行に記述し保存する
gem 'kaminari'
$ bundle install

②「rails s」で仮想サーバーを立ち上げる

$ rails s

③コントローラーファイルに「kaminari」の専用メソッドを記述する

def index
  @tweets = Tweet.page(params[:page]).per(5)
end

上記のコードでtweetテーブルからindexメソッドでデータを取得して5件までは1ページ目にそれ以降を2ページ目に表示する内容をインスタンス変数(@tweets)に代入する。

専用メソッドの解説

pageメソッド:ページネーションにおけるページ数の指定でビューにリクエストを送る時に「params」に「pageと言うキーが追加」され、それが値となる。

perメソッド:1ページあたりに表示する件数の指定。引数の値がそのまま表示数となります。(今回は5件)

④ビューファイルを編集し、必要なページにページネートが表示されるようにする。

 <%= paginate(@tweets) %>

コントローラーからの変数(@tweets)を引数として与えることでpageメソッドとperメソッドの引数からデータが渡されてページネーションが表示される。

まとめ

  • ページネーションとは1ページに表示する件数を決めて納まりきらない時は、次ページに表示させる機能
  • Railsならgemを使って簡単に実装ができる。
  • gem kaminari専用メソッドがある。