我想做一串哈希。但是问题是在第一次迭代之后,当代码转到下一行时,它将直接替换数组的内容。
@item_name =[]
item = {}
@invoiceinfo.each do |invoice|
item[:name] = Invoiceinfo.find(@invoiceinfo.id).item.name
item[:desc] = Invoiceinfo.find(@invoiceinfo.id).desc
item[:unit_price] = Invoiceinfo.find(@invoiceinfo.id).unit_price
byebug
@item_name.push (item)
end这就是我在第一次迭代之后得到的,假设我有以下数据
@item_name = [{:name=>"usman", :desc=>"sample ", :unit_price=>100}]执行下一行后,它将在执行@item_name(名称变量)后立即直接更改@item_name的内容。
@item_name = {:name=>"next_name",:desc=>"sample ",:unit_price=>100}
任何帮助都将不胜感激。谢谢
发布于 2017-01-22 13:58:00
试试像这样的东西
@item_name = []
@invoiceinfo.each do |invoice|
invoice_info = Invoiceinfo.find(@invoiceinfo.id)
item = {}
item[:name] = invoice_info.item.name
item[:desc] = invoice_info.desc
item[:unit_price] = invoice_info.unit_price
@item_name.push(item)
end发布于 2017-01-22 14:20:38
如果您考虑在ruby代码中使用ruby范例和最佳实践,这个错误在将来不会发生。
@item_name = @invoiceinfo.each_with_object([]) do |invoice, acc|
invoice_info = Invoiceinfo.find(@invoiceinfo.id)
acc.push(
name: invoice_info.item.name,
desc: invoice_info.desc
unit_price: invoice_info.unit_price
)
endhttps://stackoverflow.com/questions/41791726
复制相似问题