Я хочу создать массив хэшей. Но проблема в том, что после первой итерации, когда код переходит к следующей строке, он напрямую заменяет содержимое массива.Массив хешей - это переопределение данных непосредственно в массив
@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] = Invoiceinfo.find(@invoiceinfo.id).item.name
содержание @item_name изменено
@item_name = [{: Имя => "next_name",: убывание => "образец",: unit_price => 100}]
Любая помощь будет оценена. Thannks
Есть хороший ответ, но для выяснения того, что вы делаете неправильно, вы просто переопределяете значение на одни и те же ключи снова и снова. – OneNeptune