Railsでページネーションを簡単に実装できるwill_paginateの使い方
どうも、Linです。耳、つまんでます。
Railsアプリでページネーションを実装したい。
そんなときにおすすめなのが、
will_paginate
というgemです。
今日はこいつの使い方・導入方法を習得したので忘れないうちにメモしておきます。
「改訂3版基礎 Ruby on Rails」という書籍を参考にさせてもらいました。
Step1. 「will_paginate」をgemに追加
まずは、will_paginateというgemを追加します。
「Gem_file」に、
$ gem 'will_paginate'
という一行を最後に追加してから、gem追加時におなじみとなっている、
$ bundle install
Step2. コントローラー編集
ページネーションを実装したいデータを取り扱うコントローラーを編集していきます。
例として、index.html.erbの一覧のデータに対してページネーションを実装する例を見ましょう。
もし、Projectというモデルだった場合、projects_controller.rb内のindexアクションを以下のように編集していきます。
def index @projects = Project.paginate(page: params[:page], per_page: 5) end
これで、5つのデータごとに切り分けてページネートしてくれることになります。
per_pageの後に来る数字が1ページあたりに表示するデータ数になるみたいですね。
もし、次のようにper_page:の後ろの数字を10に変えれば1ページあたりのデータ数が10に増えるわけですね。
def index @projects = Project.paginate(page: params[:page], per_page: 10) end
Step3. ビューファイル編集
最後に、ページネーションを表示するビューファイルを編集します。
今回はindex.html.erbにページネーションを実装していきます。
なんと、will_paginateではページネーションを表示するための一行のヘルパーメソッドを追加するだけでいいのです。
Projectモデルでindexアクションで@projectsというインスタンス変数を生成していた場合、
<%= will_paginate @projects %>
この一行でページネーションが表示できます↓↓

「undefined method `paginate’」っていうエラーが出るんだけど??
えっ。
undefined method `paginate’
というエラーが出てしまったですって??
そういうときは、railsのテストサーバーを一度再起動して見てください。
Ctl + C
を押してからもう一度、
rails s
でテストサーバーを立ち上げると、先ほどのエラーは消え去るはずです。
ぜひ試してみてくださいね。
「ちょっとお前の説明だとわかんねえよ!?」
という方はRailsの参考書の「改訂3版基礎 Ruby on Rails」を読んでみてくださいね。
それでは!
Lin

おそらく、ブロガー。
今年でフリーランス 6年目。