Rails 3アプリケーションでは、1つの属性が純粋なHTMLコンテンツを格納するドメインクラスを持っています(これはブログアプリで、ドメインクラスはPostです)。
ERBテンプレートでは、HTMLタグを所定の位置に配置して、属性のコンテンツを表示されたとおりに表示する必要があります。しかし、RailsはすべてのHTMLタグをエスケープしています!このクラス属性に対してこの動作を無効にするにはどうすればよいですか?
例:
somePost = Post.new
somePost.content = "<strong> Hi, i'm here! </strong>"
Erbテンプレートで:
<%= somePost.content %>
生成されたHTMLはエスケープされます:
<strong> Hi, i'm here! </strong>
raw(somePost.content)
を使用してみてください。または、somePost.content.html_safe
。
リリースノートに記載 のように、raw(string)
を使用します。
7.4.3その他の変更
HTML出力をエスケープするためにh(string)を呼び出す必要はなくなりました。すべてのビューテンプレートでデフォルトでオンになっています。エスケープされていない文字列が必要な場合は、raw(string)を呼び出します。
基本的に、どこでしたか
<%=h @model.attr %>
使用する前に
<%= @model.attr %>
そして、あなたが今使う前にthatをした場所
<%=raw @model.attr %>