如何以HAML格式转义HTML?

如何以HAML格式转义HTML?,html,ruby-on-rails,haml,Html,Ruby On Rails,Haml,当我进行编辑时,我的HAML表单会使用&符号进行渲染文本字段中的值。我已经将escape\u html设置为true,但它仍然使用和符号呈现值我在这里犯了什么错误?这是正确的语法吗 我的表格: = f.text_field :display_name, escape_html => true 我认为Ruby有一些函数.html\u safe或raw(),这样当你保存它时,它会给你清晰的文本。作为前言,我只是在学习haml(几小时前),但我想我至少有一个好地方让你开始,因为我认为你的问题是

当我进行编辑时,我的HAML表单会使用
&符号进行渲染文本字段中的值。我已经将
escape\u html
设置为true,但它仍然使用
和符号呈现值我在这里犯了什么错误?这是正确的语法吗

我的表格:

= f.text_field :display_name, escape_html => true

我认为Ruby有一些函数
.html\u safe
raw()
,这样当你保存它时,它会给你清晰的文本。

作为前言,我只是在学习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还具有它自己的语法用于将原始字符串打印到模板

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

最后,所有返回HTML安全字符串的Haml帮助程序都被标记为HTML安全字符串。此外,字符串输入将被转义,除非它是HTML安全的。”

我不是专家,但据我所知,如果您将
:escape\u html
选项设置为
true
,您将始终得到净化的html。如果您使用的是最新版本的haml,则默认值将设置为true。请尝试将其设置为
false

我刚刚发现的另一件有用的事情是取消对html的浏览。您可以尝试使用!=在haml前面,该haml包含您希望保持未净化状态的html。例如-
!=“我感觉!”
编译成一个我感觉

我希望这能帮助你,如果你已经知道了这些东西,或者没有回答你的问题,我会感到抱歉。
祝你好运

文本字段值无论如何都不应该转义——DB值实际上包含什么?尽管对于散列键,它应该是一个符号。在db中,所有值都包含&;符号,而不是改变数据库中的所有值,我可以使用html\u safe或escape\u html吗?我想你可以手动设置值。我不知道表单标签中有什么东西会取消HTML的浏览,但我不知道有很多事情。这不仅是错误的,而且是危险的。这两种方法都假设输入是安全的,不做任何事情,使用其中任何一种方法呈现数据都会让您面临注入攻击,如跨站点脚本。