Commenting out large chunks of code in Erb templates is sometimes a bit tricky, time consuming and looks ugly even with an IDE like Netbeans.

For example:

<% if @document.fresh? %>
  <div class="fresh document"><%= link_to @document.title, @document %></div>
<% end %>

<%# if @document.fresh? %>
  <%#*<div class="document fresh">%><br>    <%#= link_to @document.title, @document %><br>  <%#*</div>%>
<%# end %>


<%# if @document.fresh? %>
<!-- <div class='document fresh'> -->
  <%#= link_to @document.title, @document %>
<!-- </div> -->
<%# end %>

Only a few lines and not very plesent to read.

A better way to comment out code in Erb?

The key is not to use comments:

<% hide do %>
  <% if @document.fresh? %>
    <div class="document fresh"><%= link_to @document.title, @document %></div>
  <% end %>
<% end %>

And the implimentation of hide is super simple:


def hide(&block)
  # do not yield

We accept the block but don’t yield it. Could this be the simplest DSL implimentaion ever?

Maybe DSL is pushing it, but still…