синтаксис single % и #comment в не работают в файлах .erb

#ruby-on-rails #ruby-on-rails-3 #erb

#ruby-on-rails #ruby-on-rails-3 #ошибка

Вопрос:

Я только что взглянул наhttp://ruby-doc.org/ruby-1.9/classes/ERB.html а также http://ruby-doc.org/ruby-1.8/classes/ERB.html. Я видел, что следующее поддерживается как в 1.8, так и в 1.9.

 % a line of Ruby code
  

Но после того, как a попробовал это в строке

 % end ### changed from <% end %>
  

браузер просто показывает % end в обычном виде… Интересно, в чем здесь проблема?

(обновлено) еще один вопрос, кажется, когда комментарий типа #blabla появляется в <%= %>, rails выдает ошибку, есть идеи?

мой код для другого вопроса:

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

Спасибо

Комментарии:

1. можете ли вы опубликовать свой код просмотра и ошибку?

2. @krunal-shah Я подозреваю, что <%= code %> не разрешает #comment . не знаю, верна ли моя догадка или нет…

Ответ №1:

Это комментарий в ERB:

 <%# Where is pancakes house? %>
  

принимая во внимание, что это ошибка:

 <%= # I'll cook you some eggs, Margie. %>
  

Вы не можете объединить комментарий и <%= %> синтаксис.

В документации, на которую вы ссылаетесь, вы можете заметить необязательное — см. Примечание ERB.new здесь:

 % a line of Ruby code -- treated as <% line %> (optional -- see ERB.new)
  

И затем, ERB.new должен ли это сказать:

Если *trim_mode * передается строка, содержащая один или несколько из следующих модификаторов, ERB скорректирует генерацию кода, как указано в списке:

% enables Ruby code processing for lines beginning with %

Так что у вас, вероятно, нет * trim_mode * в ваших ERB.new параметрах.

Комментарии:

1. Спасибо. но для 1-го вопроса я пытался опустить пробелы, но все еще не работает.

2. разрешает ли <%= %> вставлять #comment в?

3. @mu слишком короткий, не могли бы вы объяснить, почему «Вы не можете объединить комментарий и синтаксис <%= %>». ?

4. @draw: Нет, я не могу это объяснить, поскольку не могу найти формальную грамматику или спецификацию для ERB 🙂 Лучшее, что я могу сделать, это сказать, что вам это запрещено, потому что анализатор ERB говорит «нет». У работы в неофициальных системах есть свои преимущества и недостатки.

Ответ №2:

Если *trim_mode * передается строка, содержащая один или несколько из следующих модификаторов, ERB скорректирует генерацию кода, как указано в списке:

% включает обработку кода Ruby для строк, начинающихся с %