Я бы сделал это в качестве помощника
def fruit_size(fruit)
list = @fruits[fruit]
return if list.empty?
content_tag(:li, "#{list.size} #{fruit}")
end
И это в виде:
<% ["apples", "oranges", "bananas", .....].each do |fruit| %>
<%= fruit_size(fruit)
<% end %>
В вашем контроллере:
@fruits = {}
["apples", "oranges", "bananas", ......].each do |fruit|
@fruits[fruit] = fruit.classify.constantize.find(:all).each {|record|
record.whatever_here
end
end
Имеет смысл хранить все элементы в хэше, @fruits
, чтобы вам не приходилось использовать instance_variable_get
и прочее.
Возможно, вы также хотите определить этот массив где-нибудь, чтобы вам не приходилось повторять его в контроллере и в представлении. Давайте представим, что у вас есть фруктовая модель.
class Fruit < ActiveRecord::Base
FRUITS = ["apples", "oranges", "bananas", ....]
end
Затем используйте Fruit :: FRUITS в представлении и контроллере.