2009/6/22 Chris Mear <span dir="ltr"><<a href="mailto:chrismear@gmail.com">chrismear@gmail.com</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On 22 Jun 2009, at 16:31, Tim Cowlishaw wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
However, if i pass it a block that contains ERB template strings, it breaks - it just returns the result of each call to the block direct to the template being rendered, as it's executed, rather than returning it as the result of the call to array_to_list itself:<br>

<br>
<% array_to_list(@flash_games, :class => "flash_games_grid") do |game, array| %><br>
       <a href="<%= game_path(:id => <a href="http://game.id" target="_blank">game.id</a>) %>"><img src="<%= game.image_url(:grid) %>" alt="A Game" width="128" height="128" /></a><br>

<% end %><br>
<br>
I have a suspicion that this is something the rails capture() method might be needed for, but i'm struggling to understand how, Anyone seen anything similar in the past?<br>
</blockquote>
<br></div>
Yeah, I've done something like this before, by building up the output using the concat method, and using capture to get the rendered results of blocks defined in the ERB template.</blockquote><div><br></div><div>Thinking about it a little more, you could check whether you have a block, and if so use the concat method, otherwise just construct and return a string. This would let you use both the:</div>
<div><br></div><div>  <%= array_to_list %></div><div><br></div><div>and the:</div><div><br></div><div>  <% array_to_list do |e, a| %></div><div>    stuff</div><div>  <% end %></div><div><br></div><div>forms.</div>
<div><br></div><div>Chris</div><div><br></div></div>