I have the following helper method:
def tile_for( photo, tileClass = nil )
div_for( photo, :class => tileClass ) do
link_to( image_tag( photo.image_url(:sixth) ), photo )
content_tag( :div, photo.location(:min), :class => 'caption' )
end
end
The problem is, it returns this kind of output:
<div id="photo_25" class="photo">
<div class="caption" style="display: none;">Berlin</div>
</div>
As you can see the link_to is not being output. I guess this is because only the returned value of the block is being included, rather than each executed line? I don’t really understand why this kind of code works perfectly in views but doesn’t work the same at all in helper methods. Can anyone enlighten me on what’s going on and why it works the way it works? How would you build an loop helper method like this?
It works in views since ERB is really just a big concatenation engine. You need to “manually” do this work in your helper, since the code will not be interpreted by ERB:
div_foralso supports arrays, which will be collected into one continuous string. So you can also do like so: