nop*_*ole 6 ruby-on-rails content-for ruby-on-rails-3
使用 Rails 3.0.6,我发现在视图中,如果我执行
content_for :food_name, "Macaroni & Cheese"
Run Code Online (Sandbox Code Playgroud)
然后,当我使用 取回它时content_for(:food_name)
,就会已经将其&
制成&
。即使我做了 a 也没关系content_for(:food_name).html_safe
,它&
仍然已经制成了&
。
但如果按照以下方式完成,则不会转义:
content_for :food_name, "Macaroni & Cheese".html_safe
Run Code Online (Sandbox Code Playgroud)
在这种情况下,&
不会&
自动更改为。现在,因为有些地方我实际上做了 a#{h content_for(:food_name)}
并且它将被转义两次(成为&
),或者
因为我在描述中有值,所以调用某些值而不调用其他值<meta>
会很奇怪h
。
另外,一个大问题是,如果它自动转义,如果我添加" - come see us!"
到它的末尾,并依靠 Rails 3 来转义它,那么现在, the&
被转义了两次。
在文档中content_for
:
http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for
我没有看到任何这样的描述。那么上面的描述是正确的还是文档更正确——事实上没有自动 HTML 转义?
从上面网页的源代码来看,似乎content_for
调用了capture
,并且执行了ERB::Util.html_escape
,所以实际上存在自动转义,但真的应该存在吗?为什么?是否也没有记录capture
自动转义?
<%= raw some_stuff %>
当您不希望 Rails 转义这些字符时 使用,否则使用简单调用。
您始终知道内容可能在哪些区域,如果转义则可能会被修改,因此您可以简单地适应raw
这些地方。
有关更多信息,请参阅 Yehuda katz 撰写的这篇非常精彩的文章。
安全缓冲区和轨道-3-0
归档时间: |
|
查看次数: |
2473 次 |
最近记录: |