Posted at

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>