Table of Contents
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") %> |
