我有一个文档存储在工作集合中的 Mongo 中,如下所示:
"products" : [ { "id" : "51bc0cc39727911120000145", "price" : 19, "quantity" : 1, "tax" : 0 }, { "id" : "51bc0cc39727911120000171", "price" : 14, "quantity" : 1, "tax" : 0 }, { "id" : "51bc0cca9727911120000a23", "price" : 308, "quantity" : 1, "tax" : 0.092500001192093 } ]
products 是一个数组数组。当您导出为 CSV 时,当您访问“产品”键时(自然)会打印出整行。
我需要做什么:
到达产品内部并抓取每个元素,将它们打印在 CSV 中的适当列中,并在 CSV 中插入换行符,使它们在适当的列下对齐。
就像是:
ID 价格 数量税 ID 价格 数量税 ID 价格 数量税
左上方的第 1 行有实际的 JOB NUMBER,但第 2 行和第 3 行没有(这将是多余的)。
疯狂的部分是我需要一些每个逻辑来抓住工作中添加的许多部分(从无到无穷大)。
有谁知道如何解决这个问题?
我正在使用逗号 gem,所以我的模型中有一些代码:
产品做 |产品| #我在这里尝试了无数的组合 - 没有一个工作结束
帮助!
更新:
像这样的东西从产品中获取第一个元素(以及结构相同的付款)
products do |products|
products.each do |p|
@pid = p["id"]
@pid = Inventory.find_by_id(@pid)
if @pid == nil
@pid = "None"
else
@pid = @pid.parts_name
end
end
@pid
end
products 'Price' do |products|
products.each do |p|
@price = p["price"]
end
@price
end
products 'Quantity' do |products|
products.each do |p|
@qty = p["quantity"]
end
@qty
end
products 'Tax' do |products|
products.each do |p|
@tax = (p["tax"].to_f * (p["price"].to_f * p["quantity"].to_i)).round(2)
end
@tax
end
关于 for 循环逻辑的任何想法?