33 votes

Rails 3: Comment fonctionne "includes_nested_attributes_for"?

Considérez les points suivants de l'association:

class Product < ActiveRecord::Base
  belongs_to :shop
  accepts_nested_attributes_for :shop
end

Si

params[:product][:shop_attributes] = {"name" => "My Shop"}

et je fais:

@product = Product.new(params[:product])
@product.save

une nouvelle boutique avec le nom "Ma Boutique" est créée et affectée à l' @product, comme prévu.

Cependant, je ne peux pas comprendre ce qui se passe lors de l' shop_attributes contient quelques - id, comme:

params[:product][:shop_attributes] = {"id" => "20", "name" => "My Shop"}

J'obtiens l'erreur suivante:

Couldn't find Shop with ID=20 for Product with ID=

Question 1

Ce que cela veut dire ?

Question 2

Si c'est le cas, c'est à dire l' id de la boutique est connue, et la boutique avec un tel id existent déjà, comment dois-je créer l' @product , de sorte que cette vente sera affecté à elle ?

14voto

clemensp Points 1832

Je pense que vous êtes à essayer de comprendre la création d'une nouvelle rubrique associée vs associer à un élément existant.

Pour la création d'un nouvel élément, vous semblez avoir de travail. Lorsque vous avez passé le id dans shop_attributes, il n'a pas de travail, parce qu'il est à la recherche d'une association qui n'existe pas encore.

Si vous essayez d'associer à un élément existant, vous devriez être en utilisant les éléments suivants:

params[:product][:shop_id] = "20"

Ceci affectera le produit actuel de la boutique à la boutique avec l'id 'shop_id'. (Produit doit avoir un " shop_id colonne.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X