Ruby
RubyOnRails

kaminariでpaginationを実装

pagination(ページネーション)とは?

例えば、Google検索をした時に一番下に出るページ番号のこと。
長いビューを複数のページに分割して、各ページへのリンクを並べて見やすくする。

kaminariでpaginationを実装!

kaminariとはrubyのgemの一種。

Gemgfileにkaminariを追加。

Gemfile
gem 'kaminari'

bundle installを実行。

ターミナル
$ bundle install

(ローカル)サーバーの再起動

ターミナル
$ rails s

コントローラーの編集

kaminariを導入後は、コントローラーを編集して、1ページあたりに表示したい件数を指定する

hoge_controller.rb
変数名 = クラスを利用して取得したレコードのインスタンス.page(params[:page]).per(1ページに表示したい件数)

例えば、

tweets_controller.rb
@tweets = Tweet.all.order('id DESC').page(params[:page]).per(5)

ビューの編集

コントローラーの編集後、ビューを編集してページネーションのリンクを作成する。

リンクを作成したい場所に、

hoge.html.erb
<%= paginate(@tweets) %>

を記述する。例えば、

index.html.erb
<div class="contents row" >
  <% @tweets.each do |tweet| %>
    <div class="content_post" style="background-image: url(<%= tweet.image %>);">
      <%= simple_format(tweet.text) %>
      <span class="name"><%= tweet.name %></span>
    </div>
  <% end %>
  <%= paginate(@tweets) %>
</div>