2011-04-17 51 views
3

我使用Ruby on Rails的3.我曾试图在<%添加#COMMENT =%>,并且事实证明,这不是有效的...和错误提出了...我的代码是:为什么#comment语法不允许在erb的<%= %>?

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

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

另外,你如何评论<%=%>?

谢谢。

回答

6

一个#comment运行到行的结束,但如果我们重写

<%= @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) 

使用=被重写为一个函数调用,就像puts()

很明显,右括号)是注释的一部分,因此该语句不能被解析d正确。

要解决这个问题,我们可以只使用一个单独的ERB注释块,像这样:

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

最后要注意,使用||运营商合并零变量是一种很常见的Ruby成语,和根本不需要评论。正如史蒂夫麦康奈尔在代码完成说,评论应该解释为什么做了什么,而不是如何做。

+0

哦,谢谢最后的注意。但我的情况是,我只是开始学习轨道1天,只有当我写这个代码...我保证我不会这样做以后... :) – draw 2011-04-17 05:29:57

+0

另一个问题:为什么<%concat(csrf_meta_tag)#aa% >无效,而<%javascript_include_tag:defaults#abc%>有效? – draw 2011-04-17 21:32:38

+0

'concat'是否可能未定义?通常它被称为一个字符串,比如'“Hello”.concat(“,world!”)' – 2011-04-18 00:11:40

相关问题