Допустим, у меня есть схема, в которой ящик с яблоками содержит ноль или более яблок. При редактировании яблочного ящика в форме я хочу перечислить яблоки и установить флажок рядом с каждым яблоком для его удаления при отправке формы.
Я не вижу ничего плохого. В моей модели я говорю
class AppleCrate < ActiveRecord::Base
has_many :apples
accepts_nested_attributes_for :apples, :allow_destroy => true
...
end
У меня форма работает, насколько я могу судить. Флажки появляются в форме html, и когда форма обрабатывается контроллером, каждое яблоко в списке имеет атрибут с именем «_destroy», для которого установлено значение «1» или «0», в зависимости от того, поставил ли я флажок перед этим. представление.
Согласно Rails API, когда я устанавливаю _destroy в 1 и сохраняю, яблоко должно быть удалено. Но когда я отправляю форму, я получаю
ActiveRecord::UnknownAttributeError в AppleCrateController#update
неизвестный атрибут: _destroy
...
"apple_crate"=>{"id"=>"10101", "apples"=>{"1"=>{"id"=>"1", "разнообразие"=>"бабушка кузнец", "apple_crate_id"= >"10101", "_destroy"=>"1"}, "2"=>{"id"=>"2", "разнообразие"=>"fuji", "apple_crate_id"=>"10101", "_destroy "=>"1"}, "3"=>{"id"=>"3", "разнообразие"=>"macintosh", "apple_crate_id"=>"10101", "_destroy"=>"0"} , ...
и так далее.
Должно быть, я упускаю что-то очевидное, но после нескольких дней возни я не могу этого понять. Я могу успешно делать все остальное — обновлять, редактировать, индексировать и т. д. — до тех пор, пока не уберу атрибут :_destroy. Есть идеи?
(Что бы это ни стоило, я запускаю рельсы 3.2.2 в Windows.)
Обновлено:
Это то, что я рассматриваю в документация. (См. подраздел «Один ко многим».)
Обновлено:
Как просили в комментариях, вот вид:
<%= form_for @apple_crate do |f| %>
<% @apples = @apple_crate.apples %>
<% @apples.each do |apple| %>
<%= fields_for "apples[]", apple do |apple_fields| %>
<%= apple_fields.text_field :variety %>
<%= apple_fields.hidden_field :apple_crate_id %>
<%= apple_fields.hidden_field :id %>
<%= apple_fields.check_box :_destroy %>
<% end %>
<% end %>
<%= f.submit "Save" %>
<% end %>
attr_accessible :_destroy
в вашу модель AppleCrate - person user973254   schedule 09.03.2012apples_attributes
вместоapples
в хэше параметров - person user973254   schedule 09.03.2012