改行ありで入力した値をきちんと表示させる

複数行のtextareaを入力フォームで使うことが間々あります。
入力時点では改行もばっちり入って登録できるのだけれど、いざ画面に表示させようとすると、改行コードはスルーされたりなんてことも間々。
今回は複数行の内容を改行させて表示させる方法をご紹介。


結論から言えば、ヘルパーに複数行の内容があったら改行をつけるメソッドを実装すればいい、ってお話です。
こういう類のは、どこでもみんな使いたくなるメソッドだから、application_helper.rbに書いてしまいましょう。
こーんな感じに。

RUBY:
  1. module ApplicationHelper
  2.  
  3.   # HTMLで書けない文字の実体参照と改行コードのHTMLへの置換を行う
  4.   def hbr(target)
  5.     target = html_escape(target)
  6.     target.gsub(/\r\n|\r|\n/, "<br />")
  7.   end
  8.  
  9. end

hbrとしたのは、HTMLの実体参照を行ってくれるものとして、すでにhというメソッドがあるから。
それの拡張版ってことで。

ちなみに、ソースで出てくる、html_escapeというメソッドは、erb の ERB::Util モジュールにあるんだとか。hメソッドもここで定義されてるのね。

あと、変数のtargetは趣味で。strだろうがsだろうが、なーんでもいいでーす。

Via:

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加 |

3 Responses to “改行ありで入力した値をきちんと表示させる”


  1. 1 ミキティー

    これねー。ちょうど、昨日僕も実装しました。
    奇遇ですねw

  2. 2 ミキティー

    とかいいつつ、「simple_format」ってヘルパーが、用意されているっぽいっす。

  3. 3 Reku

    >ミキティー
    お。

    車輪の再発明だったかと思って調べてみました。
    確かに同じと言えば同じみたいですが、2回改行が続くとpタグに変わるのは、ありがたいような微妙なような。。

    とはいえ、実際、Wordpressでもこうなるので、スタンダードな仕様の気がしなくもないですね。

Leave a Reply