我现在一直在工作ROR .. 我对ROR很新。
有人能告诉我<%=%>之间的区别吗?和<%= h%>
为什么我们在这里?
在某些情况下我见过t而不是h ..
请澄清我
答案 0 :(得分:2)
<%=h %>
语法会转义会破坏您网页的字符(例如'&amp;')。它实际上是一个名为'h'的辅助方法。所以:
<%=h "Ann & Bill" %>
将扩展为Ann & Bill
而
<%= "Ann & Bill" %>
将扩展为Ann & Bill
,这可能不是您想要的HTML格式。
答案 1 :(得分:2)
<%=
和%>
之间的所有内容都被评估为Ruby代码,并且生成的字符串将插入到文档中(实际上是ERb,它可以用于任意文档,而不仅仅是HTML)。在这种情况下,它调用一个名为simple h
的方法来转义其参数。所以我猜你所看到的更像是<%=h @somevar%>
。因此@somevar
的内容由方法h
转义,并且返回字符串将插入整个表达式的位置。
存在的其他ERb语法是<% ... %>
来评估Ruby代码,但没有将结果插入到文档中,然后还有<% ... -%>
和<%= ... -%>
来抑制后续换行,因此避免渲染文档中的空白。
答案 2 :(得分:1)
现在已经发布了Rails 3,请注意此处的默认行为是自动转义&lt;%=%&gt;内的所有内容。标签。因此,XSS(跨站点脚本)保护始终开启,使用&lt;%= h%&gt;多余的。如果/当您从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)