Я хотел бы определить некоторые вспомогательные методы внутри вспомогательного блока, но оставить их в пределах блока, чтобы иметь разумные имена методов, и они выглядят чище.
Скажем, я хочу сделать следующее (очень простой пример), на мой взгляд, с помощью помощников:
<%= 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