##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>