おれんじりりぃぶろぐ

きっと何者にもなれないエンジニアのブログ

kaminariでページネーションを実装した

遥か昔にPHPでページネーション実装した時、だいぶ苦労した思い出があるのだけど
Railsではページネーション用のイケてるライブラリが用意されている。
今回はkaminariを使ってページネーション機能を実装してみた。

kaminari

Rails用のページネーションを簡単に実装できるライブラリ。

インストール

Gemfile中に以下を記述する。

gem 'kaminari' # pagination

使い方

使い方はとても簡単でcontroller側では変数を以下のように定義する。

@tweets = Tweet.page(params[:page])

descなどのorderの追加は以下のようすれば良い。

@tweets = Tweet.order("created_at desc").page(params[:page])

もちろんwhereも問題なく使える。

@tweets = Tweet.where(user_id: @follow_user_id).order("created_at desc").page(params[:page])

そして、view側のページネーションを挿入したい場所に以下を記述する。

<%= paginate @tweets %>

設定

rails g kaminari:config

上記を実行することで/config/initializers/にkaminari_config.rbが作成される。

kaminari_config.rb

Kaminari.configure do |config|
  # config.default_per_page = 25
  # config.max_per_page = nil
  # config.window = 4
  # config.outer_window = 0
  # config.left = 0
  # config.right = 0
  # config.page_method_name = :page
  # config.param_name = :page
end

kaminari_config.rbの設定はプロジェクト全体に適用される。個別の設定もできる。

bootstrapのデザインを適用する

以下のコマンドを実行すると/app/views/kaminariが作成され、bootstrapのデザインが適用される。

rails g kaminari:views bootstrap3

こんな感じのデザインになる。

f:id:orange_lily27:20150709155531p:plain

参考