ページネーションの実装(gemの「kaminari」実装)

ページネーションの実装

今回も以前作成したBooker2のアプリケーションに実装していく。

ページネーションとは

ページネーションとは、一つの長い文章を複数のページに分割し表示することです。

ページネーション機能の実装には、gemの「kaminari」を使い実装していく。

kaminariとは

ページネーションを簡単に実装することのできるgemのこと。

参考 kaminariのgithub URL

https://github.com/kaminari/kaminari

Kaminariのインストール

gemのkaminariをインストールしていく。

Gemfileに下記の記述を追加する。(バージョンは1.2.1を使用)

Gemfile

:
gem 'kaminari'~> '1.2.1'

bundle installを実行し、kaminariをインストールする。

$ bundle install

kaminariの設定ファイルを作成する下記コマンドを実行。

$ rails g kaminari:config

kaminariがページャで利用するテンプレートを作成する下記コマンドを実行。

$ rails g kaminari:views default

実装

Controller

UsersコントローラとBooksコントローラを変更していく。

まず、Usersコントローラのindexアクションとshowアクションの記述を変更する。

app/controllers/users_controller.rb

  def index
    # @users = User.all  #変更前
    @users = User.page(params[:page])  #変更後
    @user = current_user
    @book = Book.new
  end

  def show
    @user = User.find(params[:id])
    # @books = @user.books  #変更前
    @books = @user.books.page(params[:page])  #変更後
    @book = Book.new
  end

booksコントローラのindexアクションも記述を変更する。

app/controllers/books_controller.rb

  def index
    @book = Book.new
    # @books = Book.all  # 変更前
    @books = Book.page(params[:page])  # 変更後
  end

1ページ分の決められた数のデータだけを、新しい順に取得するように変更しています。 pageメソッドは、kaminariをインストールしたことで使用可能になったメソッドです。

View

viewでページネーションを表示したい場所に下記の記述を追加する。

app/views/users/index.html.erb

<%= paginate @users %>

app/views/books/_index.html.erb

<%= paginate books %>
表示件数の変更

config/initializersフォルダのkaminari_config.rbファイルに記述していく。 デフォルトでは25件の表示となっているので、5件に変更する。

config/initializers/kaminari_config.rb

Kaminari.configure do |config|
  config.default_per_page = 5
:
end

コメントアウトしているconfig.default_per_page = 25のコメントアウトを戻し、

25を5(表示したい件数)に変更。

表示の確認

サーバーを起動し、表示を確認する。

件数が設定した数より少ない場合、表示が出ないため注意すること。

以上でページネーションの実装が完了。

現状では、レイアウトが整っていないため、別の記事でレイアウトの調整予定。

URL ページネーションのレイアウト変更 - takifugu’s blog