will_paginateの表示をカスタマイズしたい
will_paginateのページネータで、デフォルトのspanタグではなく
ul>liを使いたかったので、renderer拡張クラスをつくろうとしてみた!
環境
railsのバージョンは3.0.7、will_paginateは3.0.pre2。
継承するクラスがない
ネット上でぐぐってみると
class CustomRenderer < WillPaginate::LinkRenderer ・・・ここで拡張・・・ end
っていう情報がよく見つかるけど、こうしようとすると
uninitialized constant WillPaginate::LinkRenderer
エラーが出ました。あうあう
will_paginateのクラス構造が変わってた(ViewHelpers)
rubyonrails-talkのMLでのやりとりを見ると、
class CustomRenderer < WillPaginate::ViewHelpers::LinkRenderer ・・・ここで拡張・・・ end
って感じで、"ViewHelpers"が追加になったみたい!できた!
併せてwill_paginateのデフォルト設定
カスタムrendererを記述する場所はみんなそれぞれの場所に書いてるみたい。
(environment.rbとかapplication.rbとかapp/modelの下とか)
僕はこうしました。
app/helpers/paginate_helper.rb にヘルパーと拡張クラスを追加
# -*- coding: utf-8 -*- module PaginateHelper def paginate collection, opts = {} opts[:id] ||= 'pageNav' opts[:previous_label] ||= '前へ' opts[:next_label] ||= '次へ' opts[:class] ||= nil opts[:renderer] ||= 'PaginateHelper::SetucoPaginateRenderer' will_paginate collection, opts end class SetucoPaginateRenderer < WillPaginate::ViewHelpers::LinkRenderer 〜ここで拡張〜 end end
ビューで使うとき
<%= paginate @pages %>
すっきり!!
コメントを投稿