Какая разница между <% code%> и <% = code%> в Rails erb?
Кажется, есть разница между ними, хотя я не могу точно сказать, что именно.
<% code %>
и
<%= code %>
Ответы
Ответ 1
<% %>
будет оценивать код ruby, содержащий
<%= %>
будет оценивать и отображать код, содержащий
Итак, шаблон содержит:
Hello <% user.name %> how are you?
... выводит:
Hello how are you
... в то время как...
Hello <%= user.name %> how are you?
... выводит:
Hello fred how are you
<% %>
обычно используется для итераторов
<ul>
<% @users.each do |user| %>
<li><%= user.name %></li>
<% end %>
</ul>
Ответ 2
<%
и %>
оценивают только код ruby между ними, а <%=
и %>
выводят результат оценки. Не смешивайте, хотя
Это приведет к выводу "foo" в журнал доступа и nil
на вывод браузера
<%= puts "foo" %>
while
<%= "foo" %>
выводит строку "foo" в браузер.
Ответ 3
<%= %>
печатает возвращаемое значение инструкции кода в браузере, а <% %>
выполняет только код.