Passing blocks to partials


#1

Hi
I’ve got following problem:

I am attempting to write helper that will display table (stored in
partial) with some custom last column contents.

I would like to call it like

<% parametrized_users_list(@users) do |user| %>
<%= user.id %>
<%= user.created_at %>
<% end %>

where user.id and user.created_at would be that custom last column
content

What I did was I’ve created helper

def parametrized_users_list(users, options = {}, &block)
concat( render(:partial => ‘users/users_list’, :locals =>
options.merge(:users => users, :optionals => block)) )
end

and partial

<% users.each do |user| %> <% end %>
Username Email
<%=h user.nickname %> <%=h user.email %> <%= optionals.call(user) %>

… but as I render it, it results in a lot of trash - whole table is
rerendered within itself several times etc… What did I do wrong? How
can I store this erb to later render it in partial with correct
context (user in this case)…


#2

Solved…

I’ve changed

<%= optionals.call(user) %>
to
<%= with_output_buffer {optionals.call(user)} %>

and now it works… Probably if I knew how to pass params (user) to
capture helper, I could use that instead