1. ホーム
  2. ruby-on-rails

[解決済み] raw 対 html_safe 対 h で html をアンエスケープする。

2022-03-16 03:53:15

質問

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

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

私の考えでは、リンクが表示されるようにしたい。つまり、@xのすべてをアンエスケープして文字列として表示させたいわけではないのです。を使うのとどう違うのでしょうか?

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

?

解決方法は?

Rails 3を検討中。

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

h はヘルパーからのものなので、コントローラやビューの中からしか使えません。これは、出力を強制的にエスケープします。非推奨というわけではありませんが、おそらくもう使うことはないでしょう。 html_safe という、かなり珍しい宣言です。

式の前に raw を呼び出すことと同じです。 to_s で連結された html_safe と同じようにヘルパーで宣言されています。 h そのため、コントローラやビューでのみ使用することができます。

" SafeBuffersとRails 3.0 がどのようなものかを説明しています。 SafeBuffer を行うクラス)。 html_safe マジック)の仕事をします。