1. ホーム
  2. html

[解決済み] Ruby on Rails: 文字列をHTMLとしてレンダリングする方法は?

2022-04-23 06:03:47

質問

私は

@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> (二重引用符をエスケープしていたバックスラッシュを除いたもの)。これらの二重引用符をquot;unescape"する最良の方法は何でしょうか?

どのように解決するのですか?

アップデイト

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

<%= sanitize @str %>


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

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

または

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

使用方法 raw は正常に動作しますが、やっていることは、文字列を変換し、その後に html_safe . 文字列があることが分かっている場合、私はむしろ html_safe なぜなら、不必要なステップを省き、何が起こっているのかを明確にすることができるからです。文字列エスケープとXSS対策についての詳細は このアスキーキャスト .