2013-04-24 87 views
0

当我进行编辑时,我的HAML表单在文本字段中呈现&ampersand;值。我已将escape_html设置为true,但它仍然呈现&ampersand;的值我在这里做了什么错误?这是正确的语法?如何以HAML格式转义HTML?

我的形式:

= f.text_field :display_name, escape_html => true 
+0

无论如何,文本字段值不应该被转义 - DB值实际包含什么?虽然对于散列键,它应该是一个符号。 – 2013-04-24 12:17:13

+0

在db中,所有值都包含&符号,而不是更改db中的所有值,我可以使用html_safe或escape_html吗? – Mano 2013-04-24 12:26:19

+0

我猜可以手动设置这个值。我不知道在表单标签中会有些东西会忽略HTML,但我并不知道很多东西。 – 2013-04-24 12:29:52

回答

-2

我认为Ruby有一些功能.html_saferaw(),这样当你保存它会给你干净的文本。

0

前言,我只是在学习haml(截至前几个小时),但我认为我至少有一个很好的开始的地方,因为我认为你的问题是你需要将它设置为false而不是true或者你应该尝试使用html。 我认为你最好的选择就是看看这一点哈姆的参考。

“Rails的XSS防护

Haml的支持Rails的XSS保护方案,这是Rails中引入2.3.5+,默认情况下在3.0.0+启用如果它的启用,Haml的公司:escape_html选项默认情况下设置为true - 就像在ERB中一样,打印到Haml模板的所有字符串都是默认转义的,与ERB一样,标记为HTML安全的字符串也不会被转义.Haml也有自己的语法,用于将原始字符串打印到模板

如果在启用XSS保护时将escape_html选项设置为false,则默认情况下Haml不会转义RUBY字符串但如果标记为H TML-safe传递给Haml的转义语法,它不会被转义。

最后,所有返回已知为HTML安全的字符串的Haml助手都被标记为这样。此外,字符串输入从http://haml.info/docs/yardoc/file.REFERENCE.html#rails_xss_protection

逃脱,除非它是HTML安全的。”

我不是专家,但是从我能理解,如果你:escape_html选项设置为true,你永远如果你使用的是最新版本的haml,你的默认值将设置为true,请尝试设置为false,而不是

我刚发现的另一个有用的东西是unescape html。尝试在haml前面使用!=包含您想要离开未经过消毒的html r例子 - != "I feel <strong>!"编译成我感觉!

http://haml.info/docs/yardoc/file.REFERENCE.html#unescaping_html

我希望这有助于和对不起,如果你已经知道的东西,或者如果它不回答你问什么。 祝你好运!