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_namesAR のすべての列名を文字列形式で取得するメソッドです。

.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 に答える