@post.body
には以下のコンテンツがあります(RDiscountを使用してMarkdownから変換されます)。ユーザーにどのように表示する必要がありますか?つまり、強いテキスト強調されたテキスト...としてレンダリングしたい...
<p><strong>strong text</strong> </p> <p><em>emphasized text</em> </p> <blockquote> <p>this is a quote</p> </blockquote><p><img src="http://www.picturehouse.com/titles/images/rock.jpg" alt="alt text" title="" /> </p>
<%= @post.body =>
を使用すると、上記のテキストとしてのみ表示されます。
Rails 3と仮定すると、 raw ヘルパーメソッドを使用します。
<%= raw(@post.body) %>
HTML出力のエスケープは、すべてのビューテンプレートでデフォルトでオンになっています(以前のバージョンとは異なり、h
メソッドを使用して文字列を個別にエスケープする必要がありました)。
Rails 3?を使用していますか?<%= %>
タグのすべてのコンテンツを自動的にエスケープします。これを回避するには、
<%= raw(@post.body) %>
Rails 3?であると思いますか?大きな変更の1つは、表示されたテキストがデフォルトで未加工であったため、自分でサニタイズする必要があったことです。このような:
<%= raw(@post.body) %>
そして、あなたはあなたが探しているものを手に入れるでしょう。
_<%== @post.body %>
_
詳しくは
_
<%== @post.body ==>
_は<%= raw(@post.body) ==>
のエイリアスですhttps://edgeguides.rubyonrails.org/active_support_core_extensions.html#output-safety