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 , комментарии должны объяснять, почему что-то сделано, а не как что-то сделано.