Один из способов сделать это - определить вспомогательные функции для ваших компонентов пользовательского интерфейса. Например, создайте этот вспомогательный метод в ApplicationHelper
:
module ApplicationHelper
def some_helper
content_tag :div do
yield
end
end
end
А затем в вашем HAML-шаблоне сделайте следующее:
= some_helper do
.the_actual_top_content
Это будет отображать:
<div class="ui">
<div class="the_actual_top_content"></div>
</div>
Редактировать
Нашли лучшее решение, используйте render :layout
:
Вот часть, называемая _ui.html.haml
:
.ui
= yield
Что называется так:
= render :layout => 'ui' do
.the_actual_top_content
Который отобразит тот же HTML, что и выше.
Редактировать 2
Хотя это далеко от идеала, вот способ сделать то, что вы просите:
Вот часть, называемая _ui2.html.haml
:
.ui2
.topcontent= top
.bottomcontent= bottom
Что называется так:
- top = capture do
.something content on top
- bottom = capture do
.something content on bottom
= render 'ui2', :top => top, :bottom => bottom
Я пытался разместить блоки capture
на линии рендеринга, но это неправильно работает с отступом HAML.