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(改行)は残る! %>