Когда вы используете <% -%> вместо <%%>
Я заметил, что в некоторых строках представлений рельсов это используется:
<% # Code... -%>
вместо:
<% # Code... %>
В чем разница?
4 ответа
<ul>
<% @posts.each do |post| -%>
<li><%=post.title%></li>
<% end -%>
</ul>
Там не будет никаких новых строк между <ul>
и первый <li>
и последнее закрытие </li>
а также </ul>
, Если бы - было опущено, было бы.
Существуют следующие варианты оценки кода в ERB (к ним можно получить доступ в Textmate с помощью Ctrl-Shift-.):
<% %>
Просто оцените содержимое.<%= %>
Оцените содержимое и выложите результат.<%= -%>
Оцените содержимое и распечатайте результат.<%# %>
Содержимое рассматривается как комментарий и не выводится.
Обратите внимание на разницу между puts
а также print
, Puts всегда добавляет новую строку в конце строки, а print - нет.
В основном, -%>
говорит не выводить новую строку в конце.
Учти это
<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. Иногда вы найдете это полезным, работая бок о бок с дизайнером
Надеюсь это поможет.
Немного поздно, но я думаю, что стоит отметить, что вы также можете сделать это:
<%- @posts.each do |post| -%>
<li><%= post.title %></li>
<%- end %>
Это убирает любые пробелы впереди.