LoginSignup
181
147

More than 5 years have passed since last update.

Railsでタグをエスケープしつつ、改行を含む複数行のTextを表示したい

Last updated at Posted at 2014-04-23

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))
181
147
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
181
147