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

dra*_*raw 3 ruby-on-rails erb

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

<%= @page_title || 'Pragmatic Bookshelf' #magic @page_title; a if a is true, else b%>
Run Code Online (Sandbox Code Playgroud)

将#comment放入<%%>似乎没有等号.我的问题是:为什么?

另外,你如何在<%=%>中添加评论?

谢谢.

Jac*_*all 6

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

如果我们重写

<%= @page_title || 'Pragmatic Bookshelf' #magic @page_title; a if a is true, else b%>
Run Code Online (Sandbox Code Playgroud)

如

puts(@page_title || 'Pragmatic Bookshelf' #magic @page_title; a if a is true, else b)
Run Code Online (Sandbox Code Playgroud)

很明显,右括号)是注释的一部分,因此无法正确解析语句.

要解决这个问题,我们可以使用单独的ERB注释块,如下所示:

<%= @page_title || 'Pragmatic Bookshelf' %><%# magic @page_title; a if a is true, else b%>
Run Code Online (Sandbox Code Playgroud)

最后一点,使用||运算符来合并nil变量是一种非常常见的Ruby习语,根本不需要注释.正如Steve McConnell在Code Complete中所说,评论应该解释为什么要做某事,而不是如何完成某事.