何百番煎じだよって話だけどPHPerからするとRailsではnl2brどうやるの?というのが気になりすぎた。
特にLaravelでは {!! nl2br(e( $something )) !!}
みたいな書き方するやつ。
simple_format って関数があるらしいけど、連続した改行は <p>
になるというおせっかいなことこの上ない余計な機能が付いている。
ヘルパを自作することになるようなのだが、Rails初心者なのでやり方を調べた結果をメモ。結論は以下のような感じに書けば良いらしい。
# application_helper.rb
module ApplicationHelper
def nl2br(input)
# とりあえず\nだけ置換
(sanitize input).gsub(/\n/, '<br>')
end
end
<article>
<p>
<%== nl2br @post.body %>
</p>
</article>
変数出力時にHTMLタグをエスケープしない方法としては、html_safe
、raw
、<%==
という3つの選択肢があるようなのだが、<%==
が一番タイプ数が少ないしわかりやすいので良いと思う。
関係ないけど、LaravelのBladeの記法パイプ風に書ければいいのにといつも思う。
{!! $something |> e |> nl2br !!}
みたいな感じで。
参考: