Ruby on Rails: 文字列を HTML としてレンダリングするには? 質問する

Ruby on Rails: 文字列を HTML としてレンダリングするには? 質問する

私は持っている

@str = "<b>Hi</b>"

そして私のerbの見解では:

<%= @str %>

ページに表示されるのは、<b>Hi</b>私が本当に欲しいものがこんにちは文字列を HTML マークアップとして「解釈」する Ruby の方法は何ですか?


編集: の場合

@str = "<span class=\"classname\">hello</span>"

もし私がそう思うなら

<%raw @str %>

HTML ソース コードは<span class=\"classname\">hello</span> で、ここに本当に必要なものがあります<span class="classname">hello</span>(二重引用符をエスケープしていたバックスラッシュなし)。これらの二重引用符を「エスケープ解除」する最善の方法は何ですか?

ベストアンサー1

アップデート

セキュリティ上の理由から、sanitizeの代わりにhtml_safe

<%= sanitize @str %>

何が起こっているかというと、セキュリティ対策として、Rails は文字列に悪意のあるコードが埋め込まれている可能性があるため、文字列をエスケープしています。しかし、Rails に文字列が であると伝えるとhtml_safe、Rails はそれをそのまま通過させます。

@str = "<b>Hi</b>".html_safe
<%= @str %>

または

@str = "<b>Hi</b>"
<%= @str.html_safe %>

を使用するrawとうまく動作しますが、文字列を文字列に変換して を呼び出すだけですhtml_safe。文字列であることがわかっている場合は、不要な手順を省略して何が起こっているかを明確にするため、直接 を呼び出すことを好みます。html_safe文字列エスケープとXSS保護の詳細については、このアスキースト

おすすめ記事