Help us understand the problem. What is going on with this article?

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専用メソッドがある。
swallows9000
製造業で働く29歳。2019年6月からドットインストールでプログラミング学習開始。webアプリケーション製作をしてみたいと思い、2020年2月からrubyとrailsを学習中。今、目指していることはテレワークができるようになること。
https://toyohiro.xyz
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away