рельсы 2.3.7 проблемы с content_for - PullRequest
0 голосов
/ 02 марта 2011

У меня есть приложение, в котором я хочу визуализировать меню, используя «content_for», а также левую панель навигации, а остальное - тело моего документа.Тем не менее, в моей левой панели и в областях меню разметка html экранируется.Я видел сообщение об использовании raw перед выходом, но это не помогло.

Потратив довольно много времени на его диагностику в реальном приложении, я создал ОЧЕНЬ простой тест и смог сделать то же самое с минимальным кодом.Вот что у меня есть:

layouts.application.erb

  <body>
     <section id="page">
        <header>
          <nav class="clear"><%= raw yield :navigation %></nav>
        </header>

       <%= yield %>

     </section>
  </body>
</html>

pages / 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 Ответ

0 голосов
/ 29 декабря 2011

Экранирование происходит, когда вы откладываете содержимое, а не при его отображении.Попробуйте использовать raw в content_for:

<% content_for raw :navigation do %>
...