Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
148
Help us understand the problem. What is going on with this article?
@t_oginogin

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

More than 5 years have passed since last update.

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))
148
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
t_oginogin
お気に入りは、Ruby、Ruby on Rails

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
148
Help us understand the problem. What is going on with this article?