Ruby on Rails で生の 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 => を使用すると、上に示したテキストとしてのみ表示されます。
解決策
Rails 3 を想定して、生のヘルパー メソッドを使用します。
<%= raw(@post.body) %>
HTML 出力のエスケープは、すべてのビュー テンプレートでデフォルトでオンになっています (文字列を個別にエスケープするために h メソッドを使用する必要があった以前のバージョンとは対照的です)。