ほぼ雑記的メモ
viewにおいて普通は拡張子 .erbをつけてると思いますが、これはerbをハンドルするハンドラで描画するという意味。ここに独自のハンドラを追加するにはこうやるとよいようです
適当にハンドラクラス(たとえばHoge::Handler)というのを作り
ActionView::Template.register_template_handler(:hoge, Hoge::Handler)
で登録する。これで拡張子hogeのついたviewはHoge::Handlerで描画します。はい終了。Rails3.2で確認しました
で、肝心のHoge::Handlerなんですが
module Hoge class Handler def self.call(template) new.call(template) end def call(template) "'" + template.source "';" end end end
のように self.callを実装するだけでよいようです。(何も変換せずにそのまま出力するコードですが) なお、上のコードだとシングルクオートやバックスラッシュが入ってきたときにエラーになるので、そこのとこだけちょっと工夫する必要がありますが本質的ではないので割愛しました。
Powered by Red Leaf ( Rev. c78c769f2 ), © Issei Numata, 2007-2021