Не уверен, что это не работает.
>> params[:payments]
{"0"=>{":amount_paid"=>"80.00", ":date_paid"=>"2/27/2008"}, "1"=>{":amount_paid"=>"100.00", ":date_paid"=>"5/8/2008"}}
Таким образом, я могу вызвать конкретный объект следующим образом:
>> params[:payments][:"1"]
{":amount_paid"=>"100.00", ":date_paid"=>"5/8/2008"}
Но если я напишу это ..
>> params[:payments].each_with_index{|item, idx| item[:"#{idx}"]}
TypeError Exception: Symbol as array index
В идеале, я хочу сделать это:
params[:payments].each_with_index do |item, idx|
@calc.payments[idx][:date_paid] = item[:"#{idx}"][":amount_paid"]
@calc.payments[idx][:amount_paid] = (item[:"#{idx}"][":amount_paid"]).to_f
end
Обновление:
Основываясь на некоторых ответах, я попробовал это:
params[:payments].each{|k,v| @calc.payments[k.to_i] = v[":amounts_paid"]}
Это превращает @calc.payments
в:
nil
nil
Хотя резервное копирование, другие, кажется, работают ..
>> params[:payments].each{|k,v| p v[":amount_paid"]}
"80.00"
"100.00"
А этот ..
>> params[:payments].each{|k,v| p @calc.payments[k.to_i]}
{:date_awarded=>"1/2/2008", :judgement_balance=>1955.96}
nil
Как я могу получить доступ к item[idx]
в цикле?