在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
方法是烦人的,因为:
- 它不适用于混合的HTML和Ruby(或者仅仅是HTML)
- 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中最不讨厌的。