ブロックヘルパー内にいくつかのヘルパーメソッドを定義したいのですが、わかりやすいメソッド名を付けて見栄えを良くするために、それらをブロックのスコープ内に保持します。
ヘルパーを使用して、次のことを実行したいとします(非常に基本的な例)。
<%= foo_box do |b| %>
<%= b.title( 'Foo Bar' ) %>
Lorem Ipsum...
<% end %>
のようなものを生成するには
<div class="foo_box">
<h2>Foo Bar</h2>
Lorem Ipsum...
</div>
このようにして、まったく異なるものを出力bar_boxするメソッドを持つことができるブロックヘルパーを持つこともできます。title
現在、私はそれらを異なるメソッドとして実装しています。たとえばfoo_box、ブロックを次のようfoo_box_titleに処理します。foo_box
def foo_box(&block)
content_tag(:div, capture(&block), :class => 'foo_box')
end