2010-08-24 2 views
0

Je deviens fou ici.Impossible de sauvegarder collection_select à l'objet

J'ai:

class Course 
    belongs_to :commune 
end 

et

class Commune 
    has_many :courses 
end 

Dans la nouvelle vue pour le cours que j'ai un menu déroulant où l'utilisateur sélectionne la commune:

f.collection_select(:commune, get_commune_list, :id, :commune, { :prompt => true }) 

(Le get_commune_list est une méthode d'aide qui renvoie une liste d'objets Commune)

Mais lorsque je tente de sauver je soit obtenir cette erreur:

Commune(#2176182100) expected, got String(#2148246520)

ou la Commune n'a pas été sauvegardé sur l'objet du cours du tout.

Les paramètres ressemblent à ceci:

{"course"=>{"price"=>"6000", 
"title"=>"Some title", 
"commune"=>"10", 
... 
} 

Je ne peux "figure † pourquoi cela ne fonctionnera pas!

Répondre

0

Cela ne devrait pas être?

f.collection_select (:commune, :commune_id, get_commune_list, :id, :commune, { :prompt => true }) 
+0

Si je fais cela, j'obtiens "méthode non définie' fusionner "pour: commune: Symbole". Si j'utilise f.collection_select (: commune_id, get_commune_list,: id,: commune, {: prompt => true}), j'obtiens une méthode non définie 'commune_id 'pour # . – fiskeben

+0

Vous essayez de faire quelque chose comme f.select ("commune_id", Commune.all.collect {| c | [c.name, c.id]}, {: prompt => true}) – AMIT

+0

Soupir ... j'ai oublié pour ajouter commune_id à la base de données. Encore dix heures quatre bien dépensées. Merci pour votre réponse. Puisque vous me laissez sur la bonne voie, je vais l'accepter. – fiskeben

Questions connexes