2010-01-08 3 views
0

J'ai la table A avec la clé étrangère à la table B dans le champ b_id. Maintenant j'essaye de faire la vue/commande pour ajouter la nouvelle entrée de la table A. Dans le formulaire j'ai une liste déroulante (via collection_select) qui liste tous les éléments de la table B et c'est où j'ai l'intention d'obtenir le b_id pour la nouvelle instance de A dans la méthode create pour A.CRUD pour table avec clé étrangère

Valeur de la zone de liste déroulante est mis à l'id de l'instance B désirée. Mais comment puis-je définir cette valeur au champ b_id de la nouvelle entité A dans la méthode ecreate? Quoi que j'essaie, c'est toujours NULL et bien sûr, j'ai l'exception.

Répondre

0

Je ne suis pas sûr que je suivrai votre question exactement, mais il semble que vous pouvez transmettre l'ID directement des params à la nouvelle Crées de méthode objet ... quelque chose comme ceci:

a = A.create(:b_id => params[:b_id], ...) 

Tout dépend vraiment de ce que vous avez nommé la zone de liste déroulante dans votre vue. Si vous pouviez coller un extrait de votre vue, cela aiderait


Mise à jour basée sur le commentaire.

regardant le rails docs pour collection_select, il semble que vous n'êtes pas passer les bonnes données à collection_select

+0

Oui, c'est exactement ce que je veux. Combobox est créé comme ceci: <% form_for (@opstina) do | f | %> ... <% = collection_select (: okrug,: id, @okrugs,: id,: naziv)%> Opstina a une clé étrangère okrug_id à Okrug. Mais je ne peux pas obtenir l'okrug_id sélectionné. J'ai essayé des trucs comme params [: okrug_id], mais il est nul – celicni

+0

essayez 'collection_select (: opstina,: okrug_id, @okrugs,: id,: naziv)' ou 'f.collection_select (: okrug_id, @okrugs,: id, : naziv) ' –

+0

Merci! Il fonctionne avec f.collection_select (: okrug_id, @okrugs,: id,: naziv) problème est survenu parce que ma balise select ressemblait à ceci (mauvais identifiant) – celicni

0

Tout d'abord, avez-vous déclaré que B a beaucoup As, et que A appartient à B dans vos modèles ? (edit: ceux-ci ont été inversés à l'origine)

class B < ActiveRecord::Base 
    has_many :as 
end 

class A < ActiveRecord::Base 
    belongs_to :b 
end 
+0

non, je n'ai pas (maintenant je l'ai ajouté) – celicni

+0

Ok, vous shouldn N'aurez besoin de rien d'autre, s'il y a un 'params [: b_id]' dans votre requête. – Ben

Questions connexes