我想获取列名和值。这是我正在使用的代码:
@products.features.each do |feature|
puts feature.color
puts feature.size
puts feature.flavor
# etc....
end
我想循环通过...类似于:
@products.features.each do |column, value|
puts column + ":" + value
end
我知道我可以创建一个Hash并将它们映射到控制器中。但我想知道是否有更好的方法来做到这一点。
答案 0 :(得分:3)
#column_names
是一种以字符串形式获取所有AR列名的方法。
.collect(&:to_sym)
在每个上面调用to_sym
并将它们放在一个数组中。
column_names = Feature.column_names.collect(&:to_sym)
@products.features.each do |feature|
#iterate thru column names. btw string interpolation is better than using +
column_names.each { |column| puts "#{column} : #{feature.send(column)}" }
end