如何以HAML形式转义HTML?

时间:2013-04-24 12:05:55

标签: html ruby-on-rails haml

当我进行编辑时,我的HAML表单会在文本字段中使用&ampersand;值进行渲染。我已将escape_html设置为true但仍然使用&ampersand;呈现值我在这里做了什么错误?这是正确的语法吗?

我的表格:

= f.text_field :display_name, escape_html => true

2 个答案:

答案 0 :(得分:0)

前言,我只是学习haml(几个小时前),但我认为我至少有一个好的开始,因为我认为你的问题是需要将它设置为false ,而不是true或者你应该尝试unescape html。 我认为你最好的办法是看看这个haml的参考资料。

  

“Rails XSS Protection

     

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

     

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

     

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

来自http://haml.info/docs/yardoc/file.REFERENCE.html#rails_xss_protection

我不是专家,但根据我的理解,如果您将:escape_html选项设置为true,您将始终获得清理后的html。如果您使用的是最新版本的haml,则默认设置为true。请尝试将其设置为false

我刚发现的另一个有用的东西是unescape html。您可以尝试在包含要保持未清理的html的haml前面使用!=。例如 - != "I feel <strong>!"编译为我感觉!。

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

我希望如果您已经知道这些内容或者它没有回答您的要求,这会有所帮助。 祝你好运!

答案 1 :(得分:-2)

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