app/helpers/application_helper.rb にこんな感じに記述。
module ApplicationHelper # HTMLで書けない文字の実体参照と改行コードのHTMLへの置換を行う def hbr(target) target = html_escape(target) target.gsub(/\r\n|\r|\n/, "<br />") end end
使用時は
<%=h @note.more_notes %>
という感じになっているところを
<%=hbr @note.more_notes %>
とすればオッケ。
Railsには simple_format という関数が元々あるんだけど、改行を2つ続けると
に自動変換する。
違いとしてはこんな感じ。
<!-- 元入力内容↓ aaaaa aaaa aa a aaaaa aaaa aa a --> <!-- simple_format ここから --> <p> <p>aaaaa <br />aaaa <br />aa <br />a</p> <p>aaaaa <br />aaaa <br />aa <br />a</p> </p> <!-- simple_format ここまで --> <!-- hbr ここから --> <p> aaaaa<br />aaaa<br />aa<br />a<br /><br /><br />aaaaa<br />aaaa<br />aa<br />a </p> <!-- hbr ここまで -->
文章として考えれば改行2つで段落扱いにするのが正しいんだけど、そうすると2つ以上改行した場合無視される。
ここんとこは使い方によるのかなという感じ。
参考(というかそのまんま):
改行ありで入力した値をきちんと表示させる | Katawara.*
http://www.katawara.com/2008/06/hbr/