Подтвердить что ты не робот

Рельсы частичных макетов с именованным выходом - почему блок доходности никогда не использовался?

У меня есть частичный, с макетом:

<%= render :partial => 'home/mobile/home', :layout => 'home/mobile/page', :locals => {:page => 'abc2'}%>

Макет (page.html.erb) имеет значения для разных блоков, например:

<div data-role="header">
  <%= yield :header %>
</div>

Однако этот блок доходности никогда не используется, в то время как файл макета основного уровня действительно дает, как и следовало ожидать.

Невозможно использовать именованные content_for/yield блоки с макетами частичных? Есть ли обходные пути?

Я бы ожидал, что наследование - content_for: заголовок должен сначала искать заголовок yield: в частичном макете, а в противном случае - основной файл макета. Но это не так. Частичный вывод макета: заголовок просто игнорируется.

4b9b3361

Ответ 1

Обходным путем было бы превратить ваш макет в вспомогательный метод, используя blocks (который должен иметь возможность правильно выполнить).

Возможно, вы захотите записать ошибку об исходной проблеме.

Ответ 2

В ситуации, подобной вашей, я заменил yield на вызов content_for без блока. Поэтому в вашем примере это будет просто:

<div data-role="header">
  <%= content_for :header %>
</div>

Это сработало для меня. То, что yield в частичных элементах не просачивается, поскольку вы предлагаете, может быть функция или ошибка, - но это все еще похоже на то, как это работает в Rails 4.1.8, через 3 года вниз:)