There seems to be a difference between the two, Though I can't tell what exactly.
<% code %>开发者_如何学运维
And
<%= code %>
<% %>
will evaluate the ruby code contained
<%= %>
will evaluate and render the code contained
So a template containing:
Hello <% user.name %> how are you?
...would output:
Hello how are you
...whilst...
Hello <%= user.name %> how are you?
...would output:
Hello fred how are you
<% %>
is commonly used for iterators
<ul>
<% @users.each do |user| %>
<li><%= user.name %></li>
<% end %>
</ul>
The <%
and %>
only evaluates the ruby code between them, while <%=
and %>
outputs the result of evaluation. Don't mix up though
This will output "foo" to the access log and nil
to the browser output
<%= puts "foo" %>
while
<%= "foo" %>
will output "foo" string to the browser.
<%= %>
prints the return value of code statement into the browser and <% %>
just executes the code.
精彩评论