在rails中的html.erb模板中阻止注释

你如何评论混合使用Ruby代码的HTML?

some text <% ... %> more text <%= ... %> something else <% ... %> 

在jsp中它很简单: <%-- ... --%> ,但是我无法在rails中find任何简洁的选项。

简单的html注释<!-- ... -->不起作用:ruby代码仍然执行并且大声疾呼。

有一个选项可以使用, if false的HTML注释,但它是相当冗长的,更不用说IDEs不支持它。

还有一个来自纯ruby的选项,令人惊讶的作品。

 <% =begin %> ... html and ruby code goes here <% =end %> 

这通常很好,除了它是冗长的,怪异的,并没有我知道的ruby IDE支持它(是的,我喜欢用一个按键评论/注释掉)。

我很好奇,是否有任何“正式”这样做的铁路?

谢谢!

我不会算作一个解决scheme,但也许封闭之间的块

 <% if false %> ... <% end %> 

或者如果你觉得有点肮脏,build立一个帮手,只是输出什么。

我从来没有需要它,但我偶然发现,这似乎没有开箱即用的解决scheme。

使用它来评论单行:

 <%# your_ruby_code %> 

对于多行,

 <% =begin %> <% ruby_code %> <% =end %> 

你说什么会工作。

=begin方法是烦人的,因为:

  1. 它不适用于混合的HTML和Ruby(或者仅仅是HTML)
  2. input很烦人

<% if false %>方法起作用,但看起来很奇怪,并且不会给任何看着你的代码的人提示你的意图。

我的解决scheme如下:

application_helper.rb ,添加一个方法如下:

 def comment end 

然后在你的视图模板中,你可以说:

 <% comment do %>Some stuff that won't be rendered...<% end %> 

这是有效的,因为任何Ruby方法都可以占用一个块,但是如果你的方法不包含yield ,它将默默地忽略传入的块。

既然你可以使用<% %>来放置一个ruby块,那么肯定可以用它来放入注释。

一个更简单和优雅的解决scheme看起来像…

 <% # See! I am a Ruby Comment # And I am multi-line # I look like a recognizable ruby comment block too # and not so complex # The only drawback with me is the Hash symbol you have to repeat # But it's the norm, isn't it? %> 

对于模板中的块注释,我的文本编辑器(Komodo)在@Garfield的build议中发现这种变化最不受欢迎:

 <%# A long multiline comment in a rails template ... # line 2 # and so on ... # %> 
 <%#= ...commented multiline block... %> 

要注释掉erb标签,请在开始标记中的=号之前使用ruby注释哈希符号

 <p> This is some text I want to keep <%= @some_object.some_attribute %> </p> <p> I want to keep this text but comment out the erb tag <%#= @some_object.another_attribute %> </p> <!-- <p> I want all of this text commented out including the erb tag <%#= @some_object.some_attribute %> </p> --> <!-- <p> I just want this html commented out but I want to keep the erb tag <%= @some_object.some_attribute %> </p> --> 

之后=开始,你不需要把%>

 <% =begin code code code code code code code code code code code code code code code code code code code code code code code code =end %> 

你必须牢记在哪里执行代码。 Ruby风格的注释工作是因为Ruby代码在服务器上被运行到Web浏览器之前在服务器上执行。 这也解释了为什么HTML注释不起作用 – Ruby已经被执行了。

您使用的IDE是否支持创build用于注释代码块的自定义macros?

崇高文本的块注释快捷键Ctrl + Shift + /注意您是否select了正常的HTML或Erb标签,并相应地放置<!---<% =begin %>

这是唯一为我工作的人。

 <% =begin %> code code code code code code code code code code code code code code code code code code code code code code code code =end %> 

我发现这个问题的唯一可以接受的解决办法是在“<%=”中放置一个空格,使其不再注册为ruby代码,然后用html注释将整个块注释掉

喜欢这个:

 <!-- <p> < %= @some_object.some_attribute %> </p> <p> < %= @some_object.another_attribute %> </p> <p> < %= @some_object.some_attribute %> </p> <p> < %= @some_object.some_attribute %> </p> --> 

是的,增加空间是烦人的。 但它是我所见过的所有解决scheme中最不讨厌的。