Helper content_tag and Blocks

The content_tag helper allows you to do things like:

content_tag(:p, “Hello world!”)

=>

Hello world!

It can take in blocks, for functionality like this:

<% content_tag :div, :class => “strong” do -%>
Hello world!
<% end -%>

=>

Hello world!

Unfortunately blocks only work in erb and not as helper methods. This
problem already has a ticket http://dev.rubyonrails.org/ticket/7432

Greg Pierce has come up with a fix
http://greg.agiletortoise.com/2007/03/01/rails-content_tag-block-fix but
I’m looking for more.

I’d like to write something along the lines of

content_tag :table do
content_tag :tr do
content_tag :td, “first”
content_tag :td, “second”
end
end

With Greg’s fix, that code doesn’t crash at least, but the block.call
line only returns the second td tag. I generally understand what the
problem is, but my skills with Ruby blocks are coming up short. Anyone
have an idea how to fix this?

If you want to write HTML like that, you should look at Markaby.

greg.