This article was migrated from http://rai
Ruby on Railsで、form_forのようなブロック引数を取るhelperメソッドを書く方法を紹介します。
ブロック引数を取るhelperメソッドは、例えば以下のような感じで使うとします。
<% foo do %> test <% end %>この結果、以下のようにヘッダとフッタが挿入された結果が出力されるとします。
foo header test foo footerこのような挙動をさせるためのfooメソッドの定義は、以下のようになります。
def foo(&block)
concat('foo header', block.bind ing)
block.call
concat('foo footer', block.bind ing)
end
concatメソッドは、ERbが内部的に使用している_erbout変数に文字列を追加します。
concatメソッドの定義はこんな感じです。
def concat(string, binding)
eval("_erbout", binding).concat(string)
end
blockが持っているERbの実行コンテクストで_erbout変数にアクセスし、
_erbout.coThis article was migrated from http://rai
posted by
genki
on Thu 7 Dec 2006
at 04:49


