180
147

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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))
180
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
180
147

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?