views:

77

answers:

5

I have some trivial markup that looks like the following:

<li class="someclass">
  <=% t'model.attr' %>
</li>

Is there a trivial way to comment that out? Just wrapping <!-- --> around the block will still leave the ruby code available to the template. This means I have to comment out the HTML and Ruby specific code separately.

What's the best way to comment out all three lines with the least amount of markup?

+7  A: 

This should work:

<%
=begin
%>
<li class="someclass">
  <=% t'model.attr' %>
</li>
<%
=end
%>
Thilo
This does work, and it's the best way I've found, but doesn't it mean something semantically besides "comment this out?" I wish there were a more sanctioned way, if so.
Nathan Long
`=begin` and `=end` are the Ruby version of block comments. Alternatively, you could also do `<<-ASDF` and `ASDF` (replacing ASDF with whatever keyword you want). This is the heredoc comment format.
Karl
A: 

Edited because I noticed the true intention of your question:

<%
=begin
%>
<li class="someclass">
  <%= t'model.attr' %>
</li>
<%
=end
%>

In every syntax highlighter that I've used (mainly textmate), this needs to be at the very beginning of the line, you can't indent it for it to appear commented. I don't know if that's a rule or a poor implementation of the highlighting.

theIV
A: 

Doesn't work:

<%# <li class="someclass">
  <=% t'model.attr' %>
</li> %>

Does work:

<% if false %>
<li class="someclass">
  <=% t'model.attr' %>
</li>    
<% end %>
floatless
A: 

You can comment ERB blocks using #:

<!-- <li class="someclass"> -->
  <%#= t'model.attr' %>
<!-- </li> -->

or avoid the literal HTML using Rails content_tag method:

<%#= content_tag :li, t'model.attr', :class=>:someclass %>
zetetic
A: 

Remove the three lines in a single commit (assuming you're using Git) and then git revert that commit when you want them back.

There you have it, done in the least amount of markup (0), just as your question asked.

Ryan Bigg