В Rails 3, я использую следующий помощник для того, чтобы получить четным нечетным цвета таблицы:Преобразование Rails 3 в Rails 2: хелперы с блоками
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
И я использую его в своих взглядах, как это:
<%= bicolor_table(services) do |service| %>
<td><%= image_tag service.area.small_image %></td>
<td><%= link_to service.title, service %></td>
<% end %>
Теперь я должен перенести приложение на Rails 2. проблема заключается в Rails 2 не использует Erubis, поэтому, когда он находит то, что% тег <% =>, он просто вызывает whatever.to_s. Итак, в моем случае этот результат при попытке выполнить
(bicolor_table(services) do |service|).to_s
С очевидными (плохими) последствиями. Вопрос в том, что я ошибаюсь в принципе (например, «помощники не должны работать таким образом, используйте вместо этого ...») или я должен искать обходное решение?
Спасибо.
Это хороший и полезный способ добиться того, что мне нужно было по этому поводу, но все-таки мне интересно, если прохождение блоков помощникам является приемлемое поведение. Спасибо за Ваш ответ! :-) –