おーしまブログ

プログラミングやってます

<rails> formで入力した文章を改行したままにする方法

こんにちは、おーしまです。

今回は、フォームで文章を入力して、それを表示する際に、改行や間隔も入力した通りに表示する方法についてです。

例えば、下のようにフォームに入力しても、、、
f:id:tomo_bb_aki0118115:20201112223317p:plain

普通に表示すると、こうなります。
f:id:tomo_bb_aki0118115:20201112223428p:plain


保存された、テキストの中身を見てみると、、、

"aaa\r\naaa\r\n               aaa\r\n"

と、なっていました。

どうやら、\r\n で、改行を示していて、間隔はそのまま間隔となって保存されているようです。
つまり、改行と間隔はそのまま保存されているので、表示するときに問題があるようです。


解決策は2つあります。(私が見つけたのは2個)

<%= safe_join(@car.text.split("\r\n"), tag.br) %>

こちらのコードを使うと、\r\nがあった時に、brタグを入れてくれるので改行できるようになりました。
ただ、全角スペースは間隔を開けてくれるのですが、半角スペースの方は反応してくれません

<pre><%= @car.text %></pre>

上記のように、preタグで囲ってあげると、改行も全角半角スペースも全て記述通りに表示してくれます。
ただ、文字がちょっと太字で表示されてしまいます。(なんで?笑)
そして、親要素の枠内を超えて、表示されてしまいます。




f:id:tomo_bb_aki0118115:20201112233440p:plain

このはてなブログでも試した結果、ここで入力した半角スペースは反応していないので、前者のやり方で良いと思います。


今回はここまでです。
それでは、また〜

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}