почему этот комментарий создает ошибку компиляции на Ruby on Rails? - PullRequest
2 голосов
/ 24 мая 2009

есть строка, отображаемая в

</p>

<pre><code><%= h @stories.inspect %>
</code>

и вывод был слишком длинным, поэтому я изменил его на

<%= #h @stories.inspect %>

<% @stories.each do |s| %>
  <%= h s.inspect %>
<% end %>

(комментируя первую строку). теперь код не скомпилируется ... говоря

ошибка компиляции
/Users/winterheat/ror/shov2/app/views/stories/index.html.erb:13: синтаксическая ошибка, неожиданное kENSURE, ожидание ')'
/Users/winterheat/ror/shov2/app/views/stories/index.html.erb:15: синтаксическая ошибка, неожиданный kEND, ожидание ')'

и если я вообще уберу эту закомментированную строку, код будет работать. я думал, в какой-то книге сказано, что вы можете закомментировать некоторый код в ERB, как это?

Обновление: забавно, если я поменяю его на

<% #h @stories.inspect %>

тогда он будет хорошо скомпилирован ... поэтому отображение тега результата <% =%>, похоже, не любит комментарии.

Ответы [ 4 ]

6 голосов
/ 24 мая 2009

Думайте о <% = как о значении «добавить значение этого выражения в выходной поток». Нет выражения? Синтаксическая ошибка. </p>

Рассмотрим

output << @stories.inspect

против

output <<

Отслеживание того, как <% = действительно обрабатывается в источнике erb, может быть назидательным. Я нашел, что это стоит потраченных усилий, когда я только начинал с Rails. </p>

4 голосов
/ 25 мая 2009

Правильный способ комментировать тег <%= %> в Ruby / Rails - <%#= %> ... ставить знак комментария перед знаком равенства. Тогда все будет работать как шарм.

3 голосов
/ 24 мая 2009

<% = должно сопровождаться выражением Ruby и заменяться на результат. </p>

выражение не приводит к ошибке

1 голос
/ 25 мая 2009

использование

<% #h @stories.inspect %>

вместо

<%= #h @stories.inspect %>

потому что

<%= (I expect something that I can convert to string) %>
...