使用 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
自动逃逸?