6

Il mio problema è in qualche modo simile alla domanda nested_form gem add works but remove fails...why?.Rails: nested_form gem rimuovere non funziona ma aggiungere opere

Ho una pagina di modifica del prodotto, in cui le sottocategorie di prodotti sono collegate in product_sub_categories. Per assegnare sottocategorie al prodotto, ho usato gli attributi nidificati per product_sub_categories. Quindi, il prodotto può avere più di una sub_categories.

Nel modello del prodotto,

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

E in vista di modifica del prodotto:

<%= 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 %> 

codice funziona bene per l'aggiunta di sottocategorie. Ma fallisce quando rimuovo la sottocategoria. Log dà:

"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) 

Anche se, clicco su Rimuovi, si passa solo _destroy = "1", ma non distrugge sotto-categoria.

Qualcuno può dire la soluzione?

Aggiornamento:

Estremamente dispiace per il mio stupido errore. Non ho visto il codice correttamente. Nel modello ho duplicato

accepts_nested_attributes_for :product_sub_categories 

senza: allow_destroy => true. Quando l'ho rimosso, il codice funzionava correttamente.

risposta

0

È necessario aggiungere la clausola dependent destroy accanto all'associazione e distruggerà le sottocategorie del prodotto.

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

non funzionava. Ancora lo stesso errore! – user2206724

+0

qual è l'errore? –

+0

hey ha funzionato! Aggiornato in questione. – user2206724

Problemi correlati