Я пытаюсь использовать: метод _destroy в вложенной форме, но он просто не работаетRails -: метод _destroy не работает
Есть две модели:
class Setting < ActiveRecord::Base
attr_accessible :category, :name, :setting_items_attributes, :_destroy
attr_accessor :_destroy
has_many :setting_items, :dependent => :destroy
accepts_nested_attributes_for :setting_items, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end
class SettingItem < ActiveRecord::Base
attr_accessible :setting_id, :value
belongs_to :setting
end
В контроллере я создаю экземпляр:
def edit
@setting = Setting.find(params[:id])
@setting.setting_items.build
end
И форма выглядит следующим образом:
<%= form_for(@setting) do |f| %>
<div class="field">
<%= f.label :category %>
<%= f.text_field :category %>
</div>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<hr>
<h3>Params:</h3>
<%= f.fields_for :setting_items do |s| %>
<span>
<div class="fields">
<%= s.text_field :value %>
<%= s.hidden_field :_destroy %>
<%= link_to_function "delete", "remove_fields(this)"%>
</div>
<% end %>
<div class="actions">
<%= f.submit "Update", :class => "btn btn-primary"%>
</div>
<% end %>
Также функция Я использую здесь:
function remove_fields(link){
$(link).prev("input[type=hidden]").val("1");
$(link).parent().fadeOut("slow");
}
Так форма setting_items просто не работает вообще, это показывает, что обновление прошло успешно, но ничего фактически не добавлены или удалены.
Вы можете добавить Params хэш, который в настоящее время когда форма отправлена? –
Попробуйте использовать $ (link) .prev ("input [type = hidden]"). Attr ("value", "1"); – Milind