У меня очень простое требование - у меня есть макет, состоящий из заголовка и тела. Это суб-макет страницы, а не сама страница.Оказание частичного/макета с несколькими блоками
Этот макет повторяется на нескольких страницах, и возможно, структура вокруг него изменится. Поэтому я хочу иметь возможность отделять содержимое заголовка и содержимого тела от структуры, которая его содержит.
Моя первая попытка была использовать визуализации частично в качестве макета, который используется именованные урожаи, чтобы сделать заголовок и тело:
<header class="Resource-header">
<%= yield :resource_header %>
</header>
<div class="Resource-body">
<%= yield :resource_body %>
</div>
Затем вынести его из моих шаблонов, как это:
<%= render layout: 'admin/resource' do %>
<% content_for :resource_header do %>
<% end %>
<% content_for :resource_body do %>
<% end %>
<% end %>
Однако это ничего не делает.
Я начал играть с порядком вещей, и обнаружил, что если content_for блоки объявляются перед вызовом частичной, такой подход делает работу:
<% content_for :resource_header do %>
<% end %>
<% content_for :resource_body do %>
<% end %>
<%= render layout: 'admin/resource' do %><% end %>
Однако это просто чувствует себя невероятно Hacky. Похоже, что content_for
имеет глобальную область видимости, и нет связи между блоком content_for
и частичным рендерингом.
Итак, каков правильный путь для достижения этого?