ページネーションの実装(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(表示したい件数)に変更。
表示の確認
サーバーを起動し、表示を確認する。
件数が設定した数より少ない場合、表示が出ないため注意すること。
以上でページネーションの実装が完了。
現状では、レイアウトが整っていないため、別の記事でレイアウトの調整予定。