Forum: Ruby on Rails passing blocks to partials

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
16b8d429e0123bc50ba8ad27cdaa6ff4?d=identicon&s=25 stevo84 (Guest)
on 2009-02-28 21:20
(Received via mailing list)
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

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

... 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)...
16b8d429e0123bc50ba8ad27cdaa6ff4?d=identicon&s=25 stevo84 (Guest)
on 2009-02-28 21:58
(Received via mailing list)
Solved....


I've changed
     <td><%=  optionals.call(user) %></td>
to
     <td><%=  with_output_buffer {optionals.call(user)} %></td>

and now it works.... Probably if I knew how to pass params (user) to
capture helper, I could use that instead
This topic is locked and can not be replied to.