web-dev-qa-db-ja.com

生のHTMLでコンテンツを表示する方法

@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 =>を使用すると、上記のテキストとしてのみ表示されます。

23
pierrotlefou

Rails 3と仮定すると、 raw ヘルパーメソッドを使用します。

<%= raw(@post.body) %>

HTML出力のエスケープは、すべてのビューテンプレートでデフォルトでオンになっています(以前のバージョンとは異なり、hメソッドを使用して文字列を個別にエスケープする必要がありました)。

54
mikej

Rails 3?を使用していますか?<%= %>タグのすべてのコンテンツを自動的にエスケープします。これを回避するには、

<%= raw(@post.body) %>
5
alex.zherdev

Rails 3?であると思いますか?大きな変更の1つは、表示されたテキストがデフォルトで未加工であったため、自分でサニタイズする必要があったことです。このような:

<%= raw(@post.body) %>

そして、あなたはあなたが探しているものを手に入れるでしょう。

5
Jaime Bellmyer

迅速、簡単、そして要点

_<%== @post.body %>
_

詳しくは

_<%== @post.body ==>_は<%= raw(@post.body) ==>のエイリアスです

https://edgeguides.rubyonrails.org/active_support_core_extensions.html#output-safety

0
CTS_AE