Helper content_tag and Blocks


#1

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?


#2

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

greg.