Railsのヘルパーメソッド「simple_format」について調べて見た
はじめに
「simple_format」とは、与えられた文字列を以下の条件で整形するメソッド。(らしい。。。)
・文字列を<p>で括る
・改行は<br />を付与
・連続した改行は、</p><p>を付与
1. simple_formatなし
# 入力値 simple_formatのテストをします。 まずは改行を1度挟みます。 # 出力値 simple_formatのテストをします。 まずは改行を1度挟みます。
本当は改行したのですが、出力値では改行されていません。
2. simple_formatあり(オプションなし)
simple_format(入力値) # 入力値 simple_formatのテストをします。 まずは改行を1度挟みます。 # 出力値 simple_formatのテストをします。 まずは改行を1度挟みます。 # ここが1文空く
出力値でも改行されていることがわかります。
全体を<p>で括っているため、最後の行にスペースが入っているように見えます。
3. simple_formatあり(オプションなし)
simple_format(入力値) # 入力値 simple_formatのテストをします。 <p>htmlタグを記述して見ます。</p> # 出力値 simple_formatのテストをします。 htmlタグを記述して見ます。 # ここが1文空く
改行は問題なくされていますが、入力した<p>が出力値に反映されていません。
htmlタグを全て除去したい場合はこれでもいいですが、残したい場合はこれはダメですね。
4. simple_formatあり(オプションあり)
simple_format(h(入力値), {}, wrapper_tag: "div") # 入力値 simple_formatのテストをします。 <p>htmlタグを記述して見ます。</p> # 出力値 simple_formatのテストをします。 <p>htmlタグを記述して見ます。</p>
改行はされていますし、htmlタグも出力されています。
また、「wrapper_tag」を追加することで<p>ではなく、別の指定したタグで囲むことができます。
まとめ
状況に応じてですが、simple_formatで文字列を囲むだけでと意図しない結果に繋がることもあるので、
文字列をどのように扱いたいか考えてから使うのがいいですね!