kaminariを使ってみる

kaminariとは?

ページング機能を簡単に実装できるGemです。
早速実装していきます。

土台となるアプリケーションを作成する。

$ rails new kaminari_test
$ rails g scaffold Blog title:string content:text
$ bin/rails db:migrate

テストデータを10件くらい作っておきます。

f:id:maru877:20170702132923p:plain

kaminariをインストー

gem 'kaminari'

$ bundle install

indexアクションを修正

  # GET /blogs
  # GET /blogs.json
  def index
    @blogs = Blog.all.page(params[:page]).per(3)
  end

perにはページングしたい数字を渡してあげることができます。

ビューを修正

<p id="notice"><%= notice %></p>

<h1>Blogs</h1>

<!-- ページング情報を表示 -->
<%= page_entries_info @blogs %>

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th>Content</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @blogs.each do |blog| %>
      <tr>
        <td><%= blog.title %></td>
        <td><%= blog.content %></td>
        <td><%= link_to 'Show', blog %></td>
        <td><%= link_to 'Edit', edit_blog_path(blog) %></td>
        <td><%= link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<!-- ページングボタンを表示 -->
<%= paginate @blogs %>

<%= link_to 'New Blog', new_blog_path %>

ブラウザ上で表示確認

f:id:maru877:20170702214920p:plain

このようにkaminariを使うことで簡単にページング機能を実装することができます。