Не уверен, что это не работает.Как вы называете индекс в .each_with_index
>> 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
Обновление:
На основании некоторых ответов, I'ved попытался это:
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]
в петле?
Интересно, можно ли использовать эту переменную, которую вы использовали для записи параметров, над которыми я работаю выше. Это SQL? Никогда не видел этого раньше. – Trip
Ничего себе, спасибо DigitalRoss! – Trip