2009-12-05 6 views
0

J'ai 3 modèles: utilisateur, le vendeur et les voituresmodèles reliant Ruby on Rails

je veux que l'utilisateur puisse choisir une voiture d'un vendeur et c'est ajouté à la liste d'achats de l'utilisateur.

J'ai quelque chose comme ça dans mon contrôleur de voiture:

@user = User.find(params[:user]) 
    @seller = Seller.find(params[:seller]) 

    @car = @user.cars.build(params[:car]) 

mais le vendeur isnt ajouté. comment puis-je faire cela s'il vous plaît?

Btw J'ai ceci:

class Car < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :seller 
end 

dans mon modèle pour voiture

+0

Vous avez demandé 45 questions, mais il a accepté des réponses sur seulement 4. Vous trouverez peut-être plus de gens sont prêts à vous aider si vous acceptez les réponses. –

Répondre

2

ajouter:

@car.seller = @seller après la construction de la voiture. Puis @car.save

Build ne connaît pas le @seller, vous devez dire à la voiture qu'il a un vendeur. Il sait seulement vraiment qu'il y a un utilisateur parce que vous avez créé la voiture de l'utilisateur.

Vous pouvez également faire:

@car = Car.new 
@car.seller = @seller 
@car.user = @user 
+0

Merci beaucoup! – Lilz

0
@car.seller = @seller 
1

Si vous assurer que les champs de formulaire qui produisent params [: voiture] comprend un champ pour l'id du vendeur que vous aurez pas besoin de changer votre contrôleur tout .

Par exemple:

<% fields_for :car, @seller.cars.build do |car_form| %> 
<%= car_form.hidden_field :seller_id 
... more fields for car form ... 

<% end %>