とんてき

Ruby, Ruby on Railsやその周辺技術を中心に。ときどき趣味のことも。

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で文字列を囲むだけでと意図しない結果に繋がることもあるので、
文字列をどのように扱いたいか考えてから使うのがいいですね!