2007-10-20
[Rails]helperとcontent_tag()で書き直してみた
もろはしさんからコメントを頂いたのでさっそくヘルパーとして実装してみた。 content_tag()は知らなかったので今まで使っていなかったよ……。
module ApplicationHelper
def action_help
html = begin
render :partial => "helps/#{controller_name}_#{action_name}"
rescue ActionView::TemplateError
$!.to_html
rescue ActionView::ActionViewError
nil
end
html ? content_tag(:div, html, :class => :help) : ''
end
end
ビューからの呼び出しは次のようになる。
<%= action_help %>
これまでヘルパーはあまり使ってなかった。というのはERBにガンガンロジック書くのが気にならないので。自分しか編集しないと割り切ってしまえば、ERBに何が書いてあってもいいかなと。でも今回の件はわざわざrhtmlを作るより、ヘルパーにメソッドとして定義するのが正解だと思う。
to_htmlというは、独自の拡張で、application_helper.rb(ここでいいのか?)に次のように書いてある。
class Exception
def to_html
"<h2>#{self.class}</h2>\n#{message}\n<pre>#{backtrace.join("\n\t")}</pre>"
end
end
ちなみにビュー好きになったのは、勉強会でもろはしさんが「表示に関することならビューでやってしまう」おっしゃっていたことにインスパイやされた結果です。