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 %>
すっきり!!
0 件のコメント:
コメントを投稿