search
LoginSignup
0

More than 1 year has passed since last update.

posted at

Railsのhtmlエスケープ方法比較

Ruby on Railsでユーザが入力したテキストを改行コードを含めて、そのまま表示したい場合があります。或いは、htmlのタグを完全に外したり、一部有効なまま残したりしたい場合もあります。

そうした場合のアプローチ比較のつもりで検証したのですが、ほとんどの場合、そのまま(何もしない)か、sanitizeを使えば良いのではないかと思います。


<% text = "<b>1</b>\n<i>2</i>\n3 >= a" %>
<%= text %> <%# そのまま(タグはエスケープされる) %>
<hr/>
<%= h(text) %> <%# そのままと一緒(使う意味ない?) %>
<hr/>
<%= simple_format(text) %> <%# 勝手に改行 & pタグが付く(お好みで..) %>
<hr/>
<%= strip_tags(text) %> <%# タグが消える %>
<hr/>
<%= sanitize(text) %> <%# 危ないタグだけ消える %>
<hr/>
<%= sanitize(text.gsub("\n","<br>")) %> <%# br(改行)は残る! %>

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
What you can do with signing up
0