Ruby on Rails中<%= ...%>和<%...%>之间的区别是什么?

wla*_*ays 4 ruby ruby-on-rails ruby-on-rails-3

它与输出有关吗?

那么,<%= ...code... %>代码执行后用于输出,<% ...code... %>仅用于执行代码?

Phr*_*ogz 11

这是ERB模板标记(Rails支持的许多模板语言之一).这个标记:

<% ... %>
Run Code Online (Sandbox Code Playgroud)

用于评估Ruby表达式.但是,该表达式的结果没有做任何事情.相比之下,加价:

<%= ... %>
Run Code Online (Sandbox Code Playgroud)

做同样的事情(运行任何Ruby代码在那里)但它调用to_s结果并用结果字符串替换标记.

简而言之:

<% just run code %>
<%= run code and output the result %>
Run Code Online (Sandbox Code Playgroud)

例如:

<% unless @items.empty? %>
  <ul>
    <% @items.each do |item| %>
      <li><%= item.name %></li>
    <% end %>
  </ul> 
<% end %>
Run Code Online (Sandbox Code Playgroud)

相比之下,这里有一些与上面相同的Haml标记:

- unless @items.empty?
  %ul
    - @items.each do |item|
      %li= item.name
Run Code Online (Sandbox Code Playgroud)