2013-12-01 4 views
2

у меня есть приложение, которое использует рельсы макетcontent_for не рендеринг в частичном виде

Упрощенная версия выглядит следующим образом:

<html> 
    <head> 
    <%= render 'layouts/head' # renders the "layouts/_head.html.erb" partial correctly 
           # the most head (css/js) content gets implemented here %> 
    </head> 
    <body> 

    <%= yield # renders the current action %> 

    <!-- implement alls scripts which should be exectued on the bottom of the page --> 
    <%= content_for :scripts_bottom %> 
    </body> 
</html> 

в моем `раскладок/_head.html.erb» Я использую

<%= content_for :scripts_head %> 
<!-- it seems `content_for` instead of `yield` appends content --> 

в моей partials я помещаю следующие отрывки, чтобы добавить их: scripts_head. (Некоторые из моих частичными должны ставить JavaScripts

<% content_for :scripts_head do %> 
    <%= javascript_include_tag 'some_script' %> 
<% end %> 

В content_for в `раскладок/головы» делает ничего

Как я могу решить это?

Похоже, что partials не в состоянии для добавления содержимого content_for, когда content_for :blah do помещается под эхо-адресом content_for/yield.

Если я попробую попробовать content_for :scripts_bottom, он будет g и отображается в нижней части страницы.

Заранее спасибо

Rails 3.2.14 рубинового 2.0.0p247

ответ

0

вместо provide, попробуйте <%= content_for :scripts_head %>

+0

это был мой первый подход: не работает. Я исправлю, что в моем вопросе – Jan

0

Если вы хотите использовать content_for то вам нужно, чтобы получить его в голове вместо рендеринга.

Таким образом, ваш заголовок будет выглядеть следующим образом:

<%= yield :scripts_head %>

В качестве альтернативы вы можете удалить content_for в вашей частичной и просто иметь JS сам по себе, как это:

<%= javascript_include_tag 'some_script' %>

Тогда вы не пришлось бы менять файл макета.

+0

content_for, похоже, добавляет несколько блоков 'content_for: blah do'. Это моя конечная цель. Но ничего не делает. Не с 'yield: blah', ни' content_for: blah' – Jan

0

В вашей layouts/head частичное, используйте yield :scripts_head не content_for

+0

Он не работает с 'yield: blah' либо .. :-( – Jan

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