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代码。