6

Mein Problem ist ähnlich wie Frage nested_form gem add works but remove fails...why?.Schienen: geschachtelte_Form Gem entfernen funktioniert nicht, aber hinzufügen funktioniert

Ich habe eine Produktbearbeitungsseite, auf der Unterkategorien von Produkten in product_sub_categories verlinkt sind. Um dem Produkt Unterkategorien zuzuordnen, habe ich verschachtelte Attribute für product_sub_categories verwendet. Das Produkt kann also mehr als eine Unterkategorie haben.

In Produktmodell,

has_many :product_sub_categories 
has_many :sub_categories, :through => :product_sub_categories 
accepts_nested_attributes_for :product_sub_categories, :allow_destroy => true 

Und in der Produktbearbeitungsansicht:

<%= f.fields_for :product_sub_categories do |product_sub_category| %> 
<%= product_sub_category.collection_select :sub_category_id, @sub_categories, :id, :sub_category, {:include_blank => 'Select a Sub Category'} %> 
<%= product_sub_category.link_to_remove "Remove", :class => "subcatlink" %> 
<% end %> 

-Code funktioniert gut für das Hinzufügen von Unterkategorien. Scheitert aber, wenn ich die Unterkategorie entferne. Log gibt:

"product_sub_categories_attributes"=>{"0"=>{"sub_category_id"=>"1", "_destroy"=>"false", "id"=>"9"}, "1"=>{"sub_category_id"=>"1", "_destroy"=>"1", "id"=>"17"}}, 
ProductSubCategory Load (0.2ms)[0m [1mSELECT `product_sub_categories`.* FROM `product_sub_categories` WHERE `product_sub_categories`.`product_id` = 8 AND `product_sub_categories`.`id` IN (9, 17) 

Obwohl ich auf Entfernen klicken, es geht nur _destroy = „1“, aber nicht Unterkategorie zerstören.

Kann jemand die Lösung sagen?

Update:

Extrem leid für meinen blöden Fehler. Ich habe Code nicht richtig gesehen. Im Modell habe ich

accepts_nested_attributes_for :product_sub_categories 

ohne: allow_destroy => true vervielfältigt. Als ich es entfernte, funktionierte Code richtig.

Antwort

0

Sie müssen dependent destroy Klausel neben der Zuordnung hinzufügen, und es wird die Unterkategorien des Produkts zerstören.

has_many :product_sub_categories, :dependent => :destroy 
+0

hat nicht funktioniert. Immer noch der selbe Fehler! – user2206724

+0

Was ist der Fehler? –

+0

Hey, es hat funktioniert! In Frage gestellt. – user2206724