2010-04-13 10 views
0

Je ne peux pas voir ce que je manque. J'ai et commande avec les articles imbriqués, ces articles ont chacun un genre. Je veux manipuler le kind_id param de chaque article, mais le "f [: kind_id]" retourner toujours 0.J'essaye de manipuler le paramètre imbriqué avant de sauver le modèle, mais je manque quelque chose

@order.items.each do |f| 
    f[:kind_id] = Kind.find_by_name(f[:kind_id]).id 
end 

les params que je reçois est

{"authenticity_token"=>"7wz7ARjwcVvCR/bpp/T04JQIQwHsMKDflF1eMCL8PTU=", 
"order"=>{"items_attributes"=>{"1271160144889"=>{"price"=>"2", 
"amount"=>"2", 
"text"=>"2", 
"kind_id"=>"fds", 
"_destroy"=>""}}, 
"total_price"=>"4"}} 

Les params ci-dessus est des données de test de cours :)

Répondre

1

Parce que :kind_id est une colonne entière, ActiveRecord l'interprète automatiquement comme un nombre entier pour vous ("fds".to_i #=> 0). Vous devez ajouter attr_accessor :kind_name au modèle d'élément et basculer le champ de formulaire à kind_name. Ensuite, vous pouvez le faire

@order.items.each do |f| 
    f.kind = Kind.find_by_name(f.kind_name) 
end 
+0

Cela fonctionne bien. Je vous remercie – Flexo