Railsでタグをエスケープしつつ、改行を含む複数行のTextを表示したい
改行文字を<br>タグに変換できれば良いのですが、
最初は次のように書きました。
<%= simple_format(text) %>
これで改行されるようになったのですが、
<b>text</b>のようにタグを含むテキストを入力するとtextが太字で表示されてしまいました。
そこで次のように書き換えました。
<%= sanitize(simple_format(text), :tags => %w(p br)) %>
これでtextが太字ではなくなりましたが、まだ<b>``</b>が表示されません。
そこで最終的に次のヘルパーを作って表示させました。
def br(str)
html_escape(str).gsub(/\r\n|\r|\n/, "<br />").html_safe
end
html_escapeで入力文字を全てエスケープし、改行を<br>タグに変換し、変換した<br>がエスケープされないようにしてます。
追記:
と書きましたが、@github0013@githubさんから次の方法で変換できることを教えてもらいました。ありがとうございます!
simple_format(h(text))