I haven't tested this in rails3, but this is what I do to capture the output of a block in rails 2.
#my_helper.rb if block_given? block_text = capture(&block) end #view_file.html.erb <% my_helper do %> ##anything output here is captured and returned to block_text <% end %> Hope that helps. I wasn't sure if your question was rails3 specific or if you just happened to be working with rails 3. Luke On Sep 3, 10:38 am, Avram Dorfman <[email protected]> wrote: > Hello, > > I'm having a hard time understanding how you are supposed to write > helpers that take blocks now in Rails 3. > > According to 7.4.2 here: > > http://edgeguides.rubyonrails.org/3_0_release_notes.html > > you are supposed to write your helpers to return their result as text, > rather than append to the accumulating content. > > How do I execute the code in the block that has been passed to the > helper without it appending to the content? My instincts, which are > clearly wrong, are to just use "yield" like I would in any other method > that takes a block. However, within the context of a helper method. > "yield" seems to have a side effect of appending to the accumulating > content. So, I have to do the following to suppress the intended output > of the helper because the yield is already appending it: > > module FooHelper > def none_if_empty > yield > return '' > end > end > > What is the proper way to write this helper in Rails 3? > > Thanks, > Avram > -- > Posted viahttp://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

