当我进行编辑时,我的HAML表单会在文本字段中使用&ersand;
值进行渲染。我已将escape_html
设置为true但仍然使用&ersand;
呈现值我在这里做了什么错误?这是正确的语法吗?
我的表格:
= f.text_field :display_name, escape_html => true
答案 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_safe
或raw()
,这样当你保存它时会给你干净的文字。