为什么这个注释会在Ruby on Rails上创建编译错误?

nop*_*ole 2 ruby ruby-on-rails erb

<pre>中显示一条线

<%= h @stories.inspect %>
Run Code Online (Sandbox Code Playgroud)

并且输出太长了,所以我把它改成了

<%= #h @stories.inspect %>

<% @stories.each do |s| %>
  <%= h s.inspect %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

(评论第一行).现在代码将无法编译...说

编译错误
/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 %>
Run Code Online (Sandbox Code Playgroud)

然后它会编译好...所以结果标签<%=%>的显示似乎不喜欢评论.

Dav*_*ith 6

可以认为<%= as表示"将此表达式的值添加到输出流".没有表达?语法错误.

考虑

output << @stories.inspect
Run Code Online (Sandbox Code Playgroud)

VS

output <<
Run Code Online (Sandbox Code Playgroud)

追踪erb源中如何真正处理<%=可能是有益的.当我开始使用Rails时,我发现它值得付出努力.