2

我想获取列名和值。这是我正在使用的代码:

@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

我知道我可以创建一个哈希并将它们映射到控制器中。但我想知道是否有更好的方法来做到这一点。

4

1 回答 1

4

#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
于 2013-08-30T15:27:56.553 回答