Rails的嵌入语法疑问
我一直在努力ROR .. 我是很新的ROR ..Rails的嵌入语法疑问
谁能告诉我是什么<%=%之间的差额>和<%= H%>
为什么我们在这里?
在某些情况下,我已经看到了一下T^h ..
请澄清我
的<%=h %>
语法转义字符,否则会弄乱你的页面(例如“&”)。它实际上是一个称为'h'的辅助方法。所以:
<%=h "Ann & Bill" %>
将扩大到Ann & Bill
而
<%= "Ann & Bill" %>
将扩大到Ann & Bill
,这可能不是你在你的HTML想要的东西。
<%=
和%>
之间的所有内容都被评估为Ruby代码,并将生成的字符串插入到文档中(实际上是ERb,它可以用于任意文档,而不仅仅是HTML)。在这种情况下,它会调用一个简单的方法h
,它转义了它的参数。所以我猜你看到的更像是<%=h @somevar%>
。所以@somevar
的内容被方法h
转义,并且返回字符串被插入到这个整个表达式的地方。
存在其他ERb的语法是<% ... %>
评估Ruby代码但不插入结果到文档中,然后有也<% ... -%>
和<%= ... -%>
抑制随后的换行,从而避免了所呈现的文档中的间隙。
现在Rails 3已经发布了,请注意,从这里开始的默认行为是自动转义<%=%>标记中的所有内容。因此,XSS(跨站点脚本)保护始终处于开启状态,因此使用冗余。这可能会咬你,如果/当你从Rails 2升级你的应用程序。
这个Railscast(http://railscasts.com/episodes/204-xss-protection-in-rails-3)给出了上面的一个很好的入门。
如果你想这种行为在Rails 2.3的应用程序,你可以使用http://github.com/rails/rails_xss(用于2.3.8)或http://github.com/NZKoz/rails_xss(用于2.3.5)
你可能想引号添加到您的字符串,还是你意思是二元 - 常量Ann和Bill? :-) – DarkDust 2010-08-31 08:50:24