html_safeメソッド
[html_safe]メソッドとは?
Railsでは、<%=%>を使ってHTMLの出力をする場合<%=%>の中に[<],[>],[&],["]といったHTMLにおいての特殊な文字を入れると、HTMLとしての意味で表示されてしまうため、Railsでは自動でこういった文字をエスケープしてブラウザ上でHTMLとしての解釈ではなく、文字としての記号として表示するようにしている。
しかし、場合によってはエスケープせずに<%=%>の中の[<],[>],[&],["]といった記号をHTMLとしての意味として使いたい場合がある。
こういった場合は、<%=%>の中で自動でエスケープされてしまうのを止めることでHTMLとして[<],[>],[&],["]といった記号を使う事ができる。
このような自動でエスケープされてしまうのを止めるメソッドが、[html_safe]メソッドです。
実際に<%=%>の中での自動エスケープと[html_safe]メソッドを使って自動エスケープを止める検証が以下のようになります。
# slim形式での記述 h3.box-title = '<p>文章</p>' # 上記の記載は、ブラウザの検証ツールでは以下のように表示されて、pタグなどがエスケープされているのが分かる <h3 class="box-title"><p>文章</p></h3>
上記は、<h3 class="box-title"></h3>
の中にrubyコードが記述されているがpタグがエスケープされてpタグのまま記述されている
# slim形式での記述 h3.box-title = '<p>文章</p>'.html_safe # 上記の記載は、ブラウザの検証ツールで以下のように表示されて、<p>タグがエスケープされず表示されてブラウザがHTMLタグとしての意味で表示しているのが分かる <h3 class="box-title"><p>文章</p></h3> <p>文章</p> </h3>
上記は、<h3 class="box-title"></h3>
の中にrubyコードが記述されてその中にある
タグがエスケープされずブラウザでHTMLの
タグの意味として表示されている