Ruby on Rails中和之间的区别是什么?
它与输出有关吗?
因此, 用于在执行代码后输出,
仅用于执行代码?
这是ERB模板标记(Rails支持的许多模板语言之一)。 这个标记:
<% ... %>
用于评估Ruby表达式。 但是,该表达式的结果没有做任何事情。 相比之下,加价:
<%= ... %>
做同样的事情(运行里面的任何Ruby代码)但它在结果上调用to_s
并用结果字符串替换标记 。
简而言之:
<% just run code %> <%= run code and output the result %>
例如:
<% unless @items.empty? %> <% @items.each do |item| %> - <%= item.name %>
<% end %>
<% end %>
相比之下,这里有一些等同于上面的Haml标记:
- unless @items.empty? %ul - @items.each do |item| %li= item.name
两者都执行其中包含的Ruby代码。 但是,不同之处在于它们对表达式返回值的处理方式。 <% ... %>
对值无效。 <%= ... %>
会将返回值输出到执行的任何文档(通常是.erb
或.rhtml
文档)。
需要注意的是, <%= ... %>
将自动转义文本中包含的任何HTML。 如果要包含任何条件HTML语句,请在<% ... %>
之外执行。
<%= "
" if need_line_break %> <% if need_line_break %>
<% end %>
<%=
用于输出单个表达式的值,例如
<%= object.attribute %> <%= link_to 'Link Title', link_path %>
而<%
用于执行任意Ruby代码。