オブジェクトの配列から csv にオブジェクトの属性値を書き込む方法を知る必要があります。
例えば。
class Item
attr_accessor :name, :weight, :price
end
def Item.create_item(name, weight, price)
a = Item.new
a.name = name
a.weight = weight
a.price = price
return a
end
array_of_items = []
array_of_items << create_item(n1, w1, p1)
array_of_items << create_items(n2,w2,p2)
.....
次の目的の出力形式でcsvファイルを生成する必要があります
row0 - 名前、重量、価格
行 1 - n1、w1、p1
行 2 - n2、w2、p2
等々
上記の指示は役に立ちます。
編集:
フィードバックに基づいて、次のことを試しました。
class Item
attr_accessor :name, :weight, :price
def initialize(name, weight, price)
@name, @weight, @price = name, weight, price
end
def to_s
[@name, @weight, @price].join(', ')
end
end
itemlist = []
itemlist << Item.new("Rice", 2, 40)
itemlist << Item.new("Wheat", 3, 80)
CSV.open("items.csv", "wb") do |csv|
itemlist.each do |i|
csv << i
end
end
これにより、NoMethodError: undefined method `map' for Rice, 2, 40:Item というエラーがスローされます。
itemlist.class を確認すると、それは Array; です。itemlist[0].class はアイテムです - ここで驚きはありません。上記で定義された to_s インスタンス メソッドは、CSV に何かが追加されたときに印刷の問題を処理するはずだとおっしゃったと思いますが、それは機能していないようです。