0

ビューでは、文字列はデフォルトでエスケープされます。

mystring = "A&B: <b>some string here</b>" 
<%=mystring%>

mystring次のようにレンダリングされます。

A&amp;B: &lt;b&gt;some string here&lt;/b&gt;

<b></b>ただし、タグをレンダリングし、アンパサンドをエスケープする必要があります。

A&amp;B: <b>some string here</b>

html_safeアンパサンドと<b>タグの両方をエスケープ解除します。アンパサンドのような特殊文字をエスケープする方法はありますが、html タグはエスケープできませんか?

4

2 に答える 2

2

RubyのCGI::unscapeElementメソッドを使用して、特定の要素をエスケープ解除できます。あなたの場合、あなたは以下を使いたいでしょう:

mystring = CGI::escape_html("A&B: <b>some string here</b>")

# You can replace ["B"] with an array of tags to be escaped, i.e. ["B", "A", "IMG"]
mystring = CGI::unescapeElement(mystring, ["B"]) 

<%= mystring.html_safe %>

その他のエスケープ方法については、 http://www.ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.htmlを参照してください。

于 2012-04-14T04:41:31.820 に答える
0

部分で文字列を分割し、必要な部分をエスケープ解除できます

于 2012-04-14T04:22:41.493 に答える