字符串“Test'< 3'”显示为“Test'< 3>”在我的Rails应用程序中

时间:2009-06-17 20:31:46

标签: ruby-on-rails ruby string escaping

我遇到一个奇怪的问题,用户可以输入以下文字

  

测试'< 3'

并输出为

  

测试'< 3>

在输出中我使用的是white_list,存储在数据库中的值是:

  

'测试''< 3'''

什么可能导致输出认为它是某种类型的标签并试图关闭它(这对我来说就是这样)。

谢谢!

1 个答案:

答案 0 :(得分:2)

Ruby中的特殊字符,例如&,<和@有时会被误解。尝试在.rhtml页面中使用“h”方法。

<strong><%= h("This is a quick Test'<3'.") %></strong>

将输出:

<strong>This is a quick Test'&lt;3'.</strong>

因此,您的浏览器会将其解释为:

这是一个快速测试'&lt; 3'。

(我还是相对较新的Ruby,所以我愿意纠正!)