In: Ruby / Rails| technology
5 6月 2008複数行のtextareaを入力フォームで使うことが間々あります。
入力時点では改行もばっちり入って登録できるのだけれど、いざ画面に表示させようとすると、改行コードはスルーされたりなんてことも間々。
今回は複数行の内容を改行させて表示させる方法をご紹介。
結論から言えば、ヘルパーに複数行の内容があったら改行をつけるメソッドを実装すればいい、ってお話です。
こういう類のは、どこでもみんな使いたくなるメソッドだから、application_helper.rbに書いてしまいましょう。
こーんな感じに。
module ApplicationHelper
# HTMLで書けない文字の実体参照と改行コードのHTMLへの置換を行う
def hbr(target)
target = html_escape(target)
target.gsub(/\r\n|\r|\n/, "<br />")
end
end
hbrとしたのは、HTMLの実体参照を行ってくれるものとして、すでにhというメソッドがあるから。
それの拡張版ってことで。
ちなみに、ソースで出てくる、html_escapeというメソッドは、erb の ERB::Util モジュールにあるんだとか。hメソッドもここで定義されてるのね。
あと、変数のtargetは趣味で。strだろうがsだろうが、なーんでもいいでーす。
Via:
ゆるーく、ふわーっと、興味のままに。
自分のかたわらに置いておくメモ代わり。
3 Responses to 改行ありで入力した値をきちんと表示させる
ミキティー
6月 6th, 2008 at 08:25:07
これねー。ちょうど、昨日僕も実装しました。
奇遇ですねw
ミキティー
6月 6th, 2008 at 15:27:21
とかいいつつ、「simple_format」ってヘルパーが、用意されているっぽいっす。
Reku
6月 18th, 2008 at 00:15:32
>ミキティー
お。
車輪の再発明だったかと思って調べてみました。
確かに同じと言えば同じみたいですが、2回改行が続くとpタグに変わるのは、ありがたいような微妙なような。。
とはいえ、実際、Wordpressでもこうなるので、スタンダードな仕様の気がしなくもないですね。