0

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

我的表格:

= f.text_field :display_name, escape_html => true
4

2 回答 2

0

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

“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 字符串。但是,如果将标记为 HTML 安全的字符串传递给 Haml 的转义语法,它不会被转义。

最后,所有返回已知为 HTML 安全的字符串的 Haml 助手都被标记为此类。此外,字符串输入会被转义,除非它是 HTML 安全的。”

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

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

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

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

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

于 2014-05-24T16:04:42.717 回答
-2

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

于 2013-04-24T12:14:47.563 回答