Я заметил, что в некоторых строках представлений рельсов это используется:
<% # Code... -%>
вместо:
<% # Code... %>
В чем разница?





<ul>
<% @posts.each do |post| -%>
<li><%=post.title%></li>
<% end -%>
</ul>
Между <ul> и первым <li> и последними закрывающими </li> и </ul> не будет никаких новых линий. Если бы - было опущено, было бы.
Учти это
<div>
<% if @some_var == some_value %>
<p>Some message</p>
<% end %>
</div>
Приведенный выше код превращается в HTML-код ниже, если @some_var имеет значение some_value.
<div>
<p>Some message</p>
</div>
Если вы поместили - в закрывающий тег, то интерпретатор ERB удалит новые строки для тех, у кого есть тег кода, включая - и приведет к следующему
<div>
<p>Some message</p>
</div>
Это полезно, если вам нужен красивый код для HTML. Иногда вам будет полезно работать бок о бок с дизайнером.
Надеюсь это поможет.
Различные варианты оценки кода в ERB следующие (доступ к ним в Textmate можно получить с помощью Ctrl-Shift-.):
<% %> Просто оцените содержимое.<%= %> Оцените содержимое и выложите результат.<%= -%> Оцените содержимое и распечатайте результат.<%# %> Содержимое рассматривается как комментарий и не выводится.Обратите внимание на разницу между puts и print. Puts всегда добавляет новую строку в конец строки, тогда как print - нет.
По сути, -%> говорит, что не выводите новую строку в конце.
Немного поздно, но я думаю, что стоит отметить, что вы также можете сделать это:
<%- @posts.each do |post| -%>
<li><%= post.title %></li>
<%- end %>
Это удаляет все пробелы впереди.
да. <% -%> подавляет новые строки. Это может быть очень полезно при работе с обычным текстом (например, в электронных письмах), когда это важно.