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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage