kaminariを .html.erb 以外にも対応させる
はじめに
保存されいてるデータを表示させるのに、データ数が多いと1度に表示させられるデータに 限界があり、可視性や表示スピードからもある一定の数を超えてくるとページャーの実装が必要に なってくると思います。ただ、ページャーを自分で実装するのは慣れていないと意外と面倒臭いものです。
その面倒な実装をしなくてすむのが、kaminariです。
今回は簡単な使い方と、.html.erb 以外の拡張で使用するとエラーがでるのでそれの解決方法をメモしておきます。
kaminariの使い方
Kaminariの使い方 Rails3時代のpaginationの標準候補が分かりやすくまとまっているのでこちらを参考にしていただければ大方大丈夫だと思います。
インストール
Gemfileに下記を追記してインストール
gem 'kaminari'
設定
使用したいModelにkaminariの設定を記述します。
Model側
# result.rb class Result < ActiveRecord::Base attr_accessible :string # 降順で4つずつ default_scope :order => 'created_at DESC' paginates_per 4 end
Controll側
@results = Result.order('created_at DESC').page params[:page]
View側
....
<%= paginate @results %>
....
このように記述すると良い感じのPagerが設置されます。
.html.erb でも使用する
問題
1つ問題なのが、PCとSPでテンプレートを分け
PC: .html.erb
SP : .smartphone.erb
というような拡張子を使っている場合に、PCと同様に
<%= paginate @results %>
と記述するとエラーになります。
これは kaminari の app/views をみてもらうと分かりますが、下記の拡張子のファイルしか対応してないためです。
解決方法
今回のように .smartphone.erb に対応させにはファイルを追加すれば問題ありません。
bundle exec rails g kaminari:view
すると自分のプロジェクトの app/views 以下に kaminari ディレクトリが生成されます。 これは本来 kaminari デフォルトのpagerを上書きするために生成されます。
ここに生成される .html.erb ファイルの拡張子を全て .smartphone.erb に書き換えれば大丈夫です。