Когда вы используете <% -%> вместо <%%> - PullRequest
4 голосов
/ 21 ноября 2008

Я заметил, что в некоторых строках видов рельсов используется:

<% # Code... -%> 

вместо:

<% # Code... %>

В чем разница?

Ответы [ 4 ]

17 голосов
/ 21 ноября 2008
    <ul>
    <% @posts.each do |post| -%> 
      <li><%=post.title%></li>
    <% end -%>
    </ul>

Между <ul> и первым <li> и последним закрытием </li> и </ul> не будет новых строк. Если бы - было опущено, то было бы.

8 голосов
/ 22 ноября 2008

Доступны следующие варианты оценки кода в ERB (к ним можно получить доступ в Textmate с помощью Ctrl-Shift-.):

  • <% %> Просто оцените содержимое.
  • <%= %> Оцените содержимое и поместите результат.
  • <%= -%> Оценить содержимое и распечатать результат.
  • <%# %> Содержимое рассматривается как комментарий и не выводится.

Обратите внимание на разницу между puts и print. Puts всегда добавляет новую строку в конце строки, а print - нет.

Как правило, -%> говорит, что не выводить новую строку в конце.

2 голосов
/ 22 ноября 2008

Рассмотрим это

<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. Иногда вы найдете это полезным, работая бок о бок с дизайнером

Надеюсь, это поможет.

1 голос
/ 26 ноября 2008

Немного поздно, но я думаю, стоит отметить, что вы также можете сделать это:

<%- @posts.each do |post| -%>
  <li><%= post.title %></li>
<%- end %>

Это удаляет все пробелы впереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...