はじめに
ページネーションとは
1ページに表示する情報が多いときに、分割して複数のページを作成しアクセスをしやすくすることです。
Googleで検索したとき、検索結果が多いと複数のページに渡って検索結果があると思うのですが、あれがページネーションになります。ページ下のGoooooooooogleってなってるやつです。
実装方法
kaminari
Gemの一種である「kaminari」をインストールすることで、ページネーションを簡単に実装できます。
kaminariのインストール
以下のように、Gemfileにkaminariを記述し、ターミナルでbundle installを実行します。
gem 'kaminari'
$ bundle install
これでページネーションを実装するためのメソッドを使用できるようになります。
ファイルの編集
ページネーションを実装するにはコントローラーファイル、ビューファイルを編集する必要があります。
編集の例としては以下のようになります。
class TweetsController < ApplicationController
def index
@tweets = Tweet.all.page(params[:page]).per(5)
end
end
ここでページネーションのために使用するメソッドはpageメソッドとperメソッドになります。
perメソッド
perメソッドの引数には1ページに表示したい要素の数を持たせます。つまり1ページに表示する検索結果を決めることができる。
pageメソッド
kaminariをインストールすることでparamsにpageのキーが追加されます。そのためpageメソッドの引数にparams[:page]を持たせることで現在のページ番号を指定できます。
<%= paginate(@tweets) %>
ビューファイルには以上の記述をすることで記述をした場所にページネーションのリンクを表示させることができます。
おわりに
ページネーションが使えるようになるとサイト作ってるなぁって感じがします笑
なんでGemの名前がkaminariなのか気になります。
わかったらまた追記したいと思います。