Добавление контента в макет из частичного - PullRequest
8 голосов
/ 30 августа 2009

Предположим, у меня есть макет приложения, и в их я даю для: заголовок содержимого следующим образом:

<head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <title></title>
    <%= stylesheet_link_tag 'scaffold' %>
    <%= yield(:head) %>
</head>

Предположим, что в том же макете приложения я вызываю частичное для отображения главного меню.

<body>

    <p style="color: green"><%= flash[:notice] %></p>

    <!-- Main Menu -->
    <%= render :partial => 'menu/menu_main' %>
</body>

Есть ли какой-либо способ из моего частичного _menu_main.erb добавить содержимое в раздел: head моего макета приложения (скажем, добавить немного CSS)?

Ответы [ 2 ]

17 голосов
/ 30 августа 2009

Вы должны использовать тег content_for .

<% content_for :head do -%>
  *your code here*
<% end -%>

Итак, код, который вы вставите внутрь, появится на заголовке вашего html-файла.

Этот эпизод Railscasts объясняет это более подробно: http://railscasts.com/episodes/8-layouts-and-content-for

7 голосов
/ 14 февраля 2014

Вот ответ https://stackoverflow.com/a/10226010

В вашем application.html.erb:

<head>
  <% if content_for? :for_head %>
    <%= yield :for_head %>
  <% end %>

В вашем «конкретном» представлении:

<% content_for :for_head do %>
  Something-to-put-in-head
<% end %>

:for_head не является предопределенным: присвоение имени зависит от вас. Это может быть что угодно.

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