html をエスケープ解除するための raw と html_safe と h の違い 質問する

html をエスケープ解除するための raw と html_safe と h の違い 質問する

次のような文字列があるとします

@x = "<a href='#'>Turn me into a link</a>"

私の考えでは、リンクを表示したいのです。つまり、@x のすべてをエスケープ解除して文字列として表示したくないのです。

<%= raw @x %>
<%= h @x %>
<%= @x.html_safe %>

?

ベストアンサー1

Rails 3 を検討する:

html_safe実際には、文字列を HTML セーフとして設定します (実際はもう少し複雑ですが、基本的にはこれです)。この方法では、ヘルパーまたはモデルから HTML セーフ文字列を自由に返すことができます。

hヘルパーからのものであるため、コントローラまたはビュー内からのみ使用できます。出力は強制的にエスケープされます。これは実際には非推奨ではありませんが、おそらくもう使用されません。唯一の用途は宣言を「元に戻す」ことですがhtml_safe、これはかなり珍しいことです。

式の先頭に を追加することは、実際にはを連鎖してraw呼び出すことと同じですが、 と同様にヘルパーで宣言されるため、コントローラーとビューでのみ使用できます。to_shtml_safeh

SafeBuffers と Rails 3.0SafeBuffer「 」は、 (魔法を実行するクラス)がどのように動作するかについての優れた説明ですhtml_safe

おすすめ記事