0

「content_for」と左のナビゲーションバーを使用してメニューをレンダリングし、残りをドキュメントの本文にするアプリケーションがあります。ただし、左側のバーとメニュー領域では、html マークアップがエスケープされています。収量の前に raw を使用することに関する投稿を見ましたが、それは役に立ちませんでした。

実際のアプリ内で診断するためにかなりの時間を費やした後、非常に単純なテストを作成し、最小限のコードで同じことを行うことができました。ここに私が持っているものがあります:

レイアウト.アプリケーション.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>

ブラウザでページにアクセスすると、ナビゲーション部分が適切にエスケープされません(実際にはリンクはありますが、メニューでは重要なリストではありません:))

これは、scaffold で生成されたコードを使用した新しい Rails プロジェクトからのもので、デフォルトのリンクをナビゲーション セクションに移動する (そしてその部分を追加する) ためだけに変更されています。

4

1 に答える 1

0

エスケープは、コンテンツを表示するときではなく、コンテンツを脇に置くときに発生します。raw内で使用してみてくださいcontent_for:

<% content_for raw :navigation do %>
于 2011-12-29T02:41:00.570 に答える