解決したい問題
フォームオブジェクトで作ったフォームから投稿すると投稿時の改行が反映されない。
解決法
app/views/dialog.html.erb
<%= h(@dialog.memo).gsub(/\n|\r|\r\n/, "<br>").html_safe %>
h(@dialog.memo)
hメソッドは、渡された文字列をHTMLエスケープするためのメソッドです。これにより、悪意のあるスクリプトやHTMLタグが表示されないようになります。
gsub(/\n|\r|\r\n/, "<br>")
gsubメソッドは、正規表現を使用して文字列内の特定のパターンを別の文字列に置換するためのメソッドです。ここでは、改行文字(\n)、復帰文字(\r)、および復帰と改行の組み合わせ(\r\n)を
タグに置換しています。つまり、改行をHTMLの改行タグに変換しています。
html_safe
html_safeメソッドは、文字列をHTMLとして解釈するためのメソッドです。これにより、HTMLタグが実際にHTMLとして表示されます。