Какая разница между <% 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

<%= %> печатает возвращаемое значение инструкции кода в браузере, а <% %> выполняет только код.