这与输出有关吗?
所以,<%= ...code... %>
用于在代码执行后输出结果,而<% ...code... %>
仅用于执行代码?
这与输出有关吗?
所以,<%= ...code... %>
用于在代码执行后输出结果,而<% ...code... %>
仅用于执行代码?
这是Rails支持的众多模板语言之一ERB模板标记。此标记:
<% ... %>
用于评估 Ruby 表达式,但不会处理表达式的结果。相比之下,标记:
<%= ... %>
它执行与之前相同的操作(运行在其中的任何 Ruby 代码),但它在结果上调用 to_s
并用生成的字符串替换标记。
简而言之:
<% just run code %>
<%= run code and output the result %>
例如:<% unless @items.empty? %>
<ul>
<% @items.each do |item| %>
<li><%= item.name %></li>
<% end %>
</ul>
<% end %>
相比之下,以下是一些 Haml 标记语言的等效代码:
- unless @items.empty?
%ul
- @items.each do |item|
%li= item.name
两者都会执行其中包含的Ruby代码。不同之处在于它们对表达式的返回值所做的处理。 <% ... %>
不会对值进行任何处理。 <%= ... %>
会将返回值输出到执行它的文档中(通常是 .erb
或 .rhtml
文档)。
需要注意的是,<%= ... %>
会自动转义文本中包含的任何 HTML。如果您想包含任何条件性 HTML 语句,请在 <% ... %>
之外添加。
<%= "<br />" if need_line_break %> <!-- Won't work -->
<% if need_line_break %>
<br />
<% end %> <!-- Will work -->
<%=
用于输出单个表达式的值,例如:
<%= object.attribute %>
<%= link_to 'Link Title', link_path %>
当使用<%
时,可以执行任意的Ruby代码。