【目次】
概要
「改行コード」を「エスケープされないHTMLタグ」に置き換えて表示する
エスケープの書き方 < 【Rails】クロスサイトスクリプティング(XSS)とその対策
書き方
safe_join:「第1引数(配列)の要素」を「第2引数(区切り文字列)」で繋いだ文字列を返す。この時、全てHTMLエスケープされる(ただし、html_safeが適用されたものはエスケープされない)
safe_join < ActionView::Helpers::OutputSafetyHelpertag.br:エスケープされない<br>を返す(html_safeが適用されたのと同じ。tag("br")と書いたらどうなるか未確認)
tag < ActionView::Helpers::TagHelper
書き方例
text_areaで入力した改行をエスケープせずに表示したケース
# app/helpers/application_helper.rb で定義する場合 module ApplicationHelper def display_line_breaks(original_text) original_text.nil? ? nil : safe_join(original_text.split("\n"), tag.br) end end
<!-- ビューで上記のメソッドを使う --> <!-- hoge:モデルのオブジェクト、piyo:カラム名 --> <%= display_line_breaks(hoge.piyo) %>