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
ちなみにビュー好きになったのは、勉強会でもろはしさんが「表示に関することならビューでやってしまう」おっしゃっていたことにインスパイやされた結果です。