Converting Rails 3 to Rails 2: Helfer mit Blöcken
In Rails 3 verwende ich den folgenden Helfer, um eine Tabelle mit geraden oder ungeraden Farben zu erhalten:
def bicolor_table(collection, classes = [], &block)
string = ""
even = 0
for item in collection
string << content_tag(:tr, :class => (((even % 2 == 0) ? "even " : "odd ") + classes.join(" "))) do
yield(item)
end
even = 1 - even
end
return string
end
Und ich benutze es in meinen Ansichten so:
<%= bicolor_table(services) do |service| %>
<td><%= image_tag service.area.small_image %></td>
<td><%= link_to service.title, service %></td>
<% end %>
Jetzt muss ich die Anwendung auf Rails 2 migrieren. Das Problem ist, dass Rails 2 Erubis nicht verwendet. Wenn es also ein <% = whatever%> -Tag findet, ruft es einfach whatever.to_s auf. In meinem Fall führt dies dazu, dass versucht wird, @ auszuführe
(bicolor_table(services) do |service|).to_s
it den offensichtlichen (schlechten) Konsequenzen. Die Frage ist: irre ich mich im Prinzip (wie "Helfer sollten nicht so arbeiten, sondern stattdessen ...") oder soll ich nach einem Workaround suchen?
Vielen Dank