为什么在erb的<%=%>中不允许使用#comment语法?

时间:2011-04-17 04:49:18

标签: ruby-on-rails erb

我正在使用Ruby on Rails 3.我曾尝试在&lt;%=%&gt;中添加#comment,结果证明它无效...并且引发了错误...我的代码是:< / p>

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

似乎可以将#comment放入&lt; %%&gt;没有等号。我的问题是:为什么会这样?

另外,如何在&lt;%=%&gt;?

中添加评论

感谢。

1 个答案:

答案 0 :(得分:6)

#comment运行到一行的末尾,但=的使用被重写为函数调用,如puts()

如果我们改写

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

作为

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习语,根本不需要注释。正如史蒂夫麦康奈尔在代码完成中所说,评论应该解释为什么要做某事,而不是如何完成某事。