2014-11-23 2 views
3

У меня очень простое требование - у меня есть макет, состоящий из заголовка и тела. Это суб-макет страницы, а не сама страница.Оказание частичного/макета с несколькими блоками

Этот макет повторяется на нескольких страницах, и возможно, структура вокруг него изменится. Поэтому я хочу иметь возможность отделять содержимое заголовка и содержимого тела от структуры, которая его содержит.

Моя первая попытка была использовать визуализации частично в качестве макета, который используется именованные урожаи, чтобы сделать заголовок и тело:

<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 и частичным рендерингом.

Итак, каков правильный путь для достижения этого?

ответ

Смежные вопросы