почему синтаксис #comment не разрешен в erb <% =%>? - PullRequest
3 голосов
/ 17 апреля 2011

Я использую Ruby on Rails 3. Я пытался добавить #comment в <% =%>, и оказалось, что он недействителен ... и возникла ошибка ... Мой код:

<%= @page_title || 'Pragmatic Bookshelf' #magic @page_title; a if a is true, else b%>

Кажется, можно поместить #comment в <%%> без знака равенства. Мой вопрос: почему это так?

Кроме того, как поместить комментарий внутри <% =%>?

Спасибо.

1 Ответ

6 голосов
/ 17 апреля 2011

A #comment работает до конца строки, но использование = переписывается как вызов функции, например puts()

Если мы переписываем

<%= @page_title || 'Pragmatic Bookshelf' #magic @page_title; a if a is true, else b%>

as

puts(@page_title || 'Pragmatic Bookshelf' #magic @page_title; a if a is true, else b)

Становится ясно, что закрывающая скобка ) является частью комментария, и, следовательно, оператор не может быть правильно проанализирован.

Чтобы обойти это, мыможно просто использовать отдельный блок комментариев ERB, например, так:

<%= @page_title || 'Pragmatic Bookshelf' %><%# magic @page_title; a if a is true, else b%>

В качестве последнего замечания, использование оператора || для объединения переменных nil является очень распространенной идиомой Ruby и не требует комментариев ввсе.Как говорит Стив Макконнелл в Code Complete , комментарии должны объяснять, почему что-то сделано, а не как что-то сделано.

...