使用 Rails 3.0.6,我发现在视图中,如果我做一个
content_for :food_name, "Macaroni & Cheese"
然后当我用 取回它时content_for(:food_name),&就会变成&已经。我做 a 没关系content_for(:food_name).html_safe,&仍然已经做成&了。
但如果按照以下方式完成,则不会转义:
content_for :food_name, "Macaroni & Cheese".html_safe
在这种情况下,&不会&自动更改为。现在,因为有些地方我实际上做了 a#{h content_for(:food_name)}并且它会被转义两次(变成&),或者
因为我在描述中有值,所以调用一些值而不调用其他一些值<meta>会很奇怪h。
另外,一个大问题是,如果它自动转义,如果我添加" - come see us!"到它的末尾,并依靠 Rails 3 来转义它,那么现在,它&被转义了两次。
在content_for文档中:
http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for
我没有看到任何这样的描述。那么上面的描述是正确的还是文档更正确——实际上没有自动的 HTML 转义?
从上面网页的源代码看来,content_for调用capture,它做了一个ERB::Util.html_escape,所以实际上有一个自动转义,但真的应该有,为什么?是否也没有记录capture 自动逃逸?