Рельсы 2.3.7 проблемы с content_for
У меня есть приложение, в котором я хочу визуализировать меню, используя "content_for", а также левую панель навигации, а остальное - тело моего документа. Однако в левой панели и в областях меню разметка html экранируется. Я видел сообщение об использовании raw перед выходом, но это не помогло.
Потратив довольно много времени, пытаясь диагностировать его в реальном приложении, я создал ОЧЕНЬ простой тест и смог заставить его делать то же самое с минимальным кодом. Вот что у меня есть:
layouts.application.erb
<body>
<section id="page">
<header>
<nav class="clear"><%= raw yield :navigation %></nav>
</header>
<%= yield %>
</section>
</body>
</html>
страницы / index.html.erb
<% content_for :navigation do %>
<ul><li><%= link_to 'New page', new_page_path %></li></ul>
<% end %>
<h1>Listing pages</h1>
<table>
<tr>
<th>Title</th>
<th>Body</th>
</tr>
<% @pages.each do |page| %>
<tr>
<td><%=h page.title %></td>
<td><%=h page.body %></td>
<td><%= link_to 'Show', page %></td>
<td><%= link_to 'Edit', edit_page_path(page) %></td>
<td><%= link_to 'Destroy', page, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
Когда я нажимаю на страницу в браузере, навигационная часть не отображается должным образом (на самом деле это ссылка, но не список, что очень важно для меню:))
Это из совершенно нового проекта rails, использующего сгенерированный скаффолдом код, который был изменен только для перемещения ссылки по умолчанию вверх в раздел навигации (и добавления этой части в).
1 ответ
Экранирование происходит, когда вы откладываете контент, а не когда вы отображаете его. Попробуйте использовать raw
в content_for
:
<% content_for raw :navigation do %>