Что означает «-» в блоках серверного кода в ruby ​​на рельсах? - PullRequest
2 голосов
/ 06 апреля 2010

Я часто вижу такие вещи в представлениях рельсов:

<% form_tag some_path do -%>      
<% end -%>

Почему в конце каждой из этих строк есть "-"? Мой код прекрасно работает без него, но это лучший метод или какая-то мера безопасности?

Ответы [ 2 ]

7 голосов
/ 06 апреля 2010

Добавление «-» в конец тега удаляет разрыв строки для этой строки и любые пробельные символы, которые могут последовать. Аналогично, добавление его в начало удаляет все пробельные символы, которые могут предшествовать ему.

Например,

Some text.
    <% -%>
More text.

Результат:

Some text.
    More text.   # The linebreak in line 2 was suppressed in the output.
0 голосов
/ 06 апреля 2010

Это предотвращает вывод лишних пробелов :

С большинством тегов вы можете изменить способ, которым ERB урезает пробелы в одной строке.По сути, добавление символа «-» в конец тега не позволяет ERB включать любые пробелы после тега в той же строке в HTML, включая окончательный возврат каретки.«-» в начале тега делает то же самое для символов перед тегом.

...