6

Vấn đề của tôi hơi giống với câu hỏi nested_form gem add works but remove fails...why?.Rails: nested_form gem remove không hoạt động nhưng thêm công trình

Tôi có trang chỉnh sửa sản phẩm, trong đó các danh mục phụ của sản phẩm được liên kết trong product_sub_categories. Để gán các danh mục con cho sản phẩm, tôi đã sử dụng các thuộc tính lồng nhau cho product_sub_categories. Vì vậy, sản phẩm có thể có nhiều hơn một tiểu thể loại.

Trong mô hình sản phẩm,

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

Và trong sản phẩm chỉnh sửa xem:

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

Mã hoạt động tốt cho thêm tiểu mục. Nhưng không thành công khi tôi xóa danh mục phụ. Nhật ký cung cấp:

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

Mặc dù, tôi nhấp vào Xóa, nó chỉ vượt qua _destroy = "1", nhưng không phá hủy danh mục phụ.

Ai có thể nói giải pháp này?

Cập nhật:

Rất tiếc vì lỗi lầm ngu ngốc của tôi. Tôi không thấy mã đúng cách. Trong mô hình tôi đã sao chép

accepts_nested_attributes_for :product_sub_categories 

không có: allow_destroy => true. Khi tôi gỡ bỏ nó, mã hoạt động đúng.

Trả lời

0

Bạn cần thêm mệnh đề dependent destroy bên cạnh liên kết và điều này sẽ phá hủy các danh mục phụ của sản phẩm.

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

không hoạt động. Vẫn lỗi tương tự! – user2206724

+0

lỗi là gì? –

+0

hey nó đã hoạt động! Đã cập nhật trong câu hỏi. – user2206724

Các vấn đề liên quan