方法が色々ありすぎていつも迷うのですが、simple_formatとsanitizeの組み合わせが今の所ベストな予感(別解が出てきたら追記します)。注意点はsanitizeでpタグも許可しておかないと、改行がおかしくなってしまうところでしょうか。
pとbrを許可:
> helper.sanitize(helper.simple_format("1\n2\n\n3\n"), tags: %w(p br))
=> "<p>1\n<br>2</p>\n\n<p>3\n</p>"
brだけ許可した場合(うまくいかない):
> helper.sanitize(helper.simple_format("1\n2\n\n3\n"), tags: %w(br))
=> "1\n<br>2\n\n3\n"
pタグを混ぜたくない場合は、普通に gsub
に頼るのがシンプルかも。
> helper.sanitize("1\n2\n\n3\n".gsub(/\n/,"<br>"), tags: %w(p br))
=> "1<br>2<br><br>3<br>"
参考URL: