I have large block of HTML in my application that I would like to move into a shared template and then use content_for with yields to insert the necessary content. However, if I use it more than once in the same layout file the content_for just appends to the previous making that idea not work so well. Is there a solution to this?
<div class="block side">
<div class="block_head">
<div class="bheadl"></div>
<div class="bheadr"></div>
<h2><%= yield :block_head %></h2>
</div>
<div class="block_content">
<%= yield :block_content %>
</div>
<div class="bendl"></div>
<div class="bendr"></div>
</div>
and I use the following code to set the content for the block
<%= overwrite_content_for :block_head do -%>
My Block
<% end -%>
<%= overwrite_content_for :block_content do -%>
<p>My Block Content</p>
<% end -%>
<%= render :file => "shared/_blockside" %>
The problem is if I use this multiple times on the same layout the content from the original block is appended to the secondary block
I have tried creating a custom helper method to get around it, however it does not return any content
def overwrite_content_for(name, content = nil, &block)
@_content_for[name] = ""
content_for(name, content &block)
end
I may also be going about this completely wrong and if there are any better methods for getting content to work like this I would like to know. Thanks.