目次
PHP にあった nl2br
を Rails で実現する方法です。
環境
(Rails が大きく変わらない限り) いろんなバージョンで使えると思います。
- Rails 4.2.5
- Ruby 2.0.0
方法1: 既にあるもので間に合わせる
既存の Rails のメソッドで間に合わせるなら simple_format
が使えます。 ただし nl2br
と同じ挙動は期待できません。
simple_format
こちらの関数は 2つの連続した改行 (\n
) があれば 段落(paragraph) として区切り、 連続しない改行があれば 改行(<br>
) として扱うというものです。
改行だけでなく段落まで作られてしまうので注意が必要です。 段落を作るためのタグは、 デフォルトでは p
タグ で、 :wrapper_tag
というオプションに別のタグを指定することで変更できますが、 段落区切りを無視することはできません。
1 |
<%= simple_format(text) %> |
方法2: 関数自作
ないので作るということになります。
例えば ApplicationHelper
で次のように nl2br
という関数を作ってしまいます。
1 2 3 4 5 |
module ApplicationHelper def nl2br(str) return sanitize(str).gsub("\n", '<br>').html_safe end end |
PHP の nl2br
のすべてを再現したわけではないですが、 これで改行を <br>
に変換できます。 使い方は次のようになります。
1 |
<%= nl2br("something\nto\nsay") %> |