Rails で nl2br を実現する


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 というオプションに別のタグを指定することで変更できますが、 段落区切りを無視することはできません。

方法2: 関数自作

ないので作るということになります。

例えば ApplicationHelper で次のように nl2br という関数を作ってしまいます。

PHP の nl2br のすべてを再現したわけではないですが、 これで改行を <br> に変換できます。 使い方は次のようになります。