0
我簡化了我更新的形式進行演示:_destroy屬性不破壞記錄
class DesignerLayout < ActiveRecord::Base
has_many :designer_panels, dependent: :destroy
accepts_nested_attributes_for :designer_panels
_form.html.erb
<%= form_for @designer_layout do |f| %>
<%= f.fields_for :designer_panels, @designer_layout.designer_panels do |designer_panel_builder| %>
<%= designer_panel_builder.hidden_field :_destroy %>
<%= link_to '#', class: 'remove-item' do %>
<%= content_tag :span %>
<% end %>
<% end %>
<% end %>
form.js
$(document).ready(function(){
$('.remove-item').click(function(){
$(this).prev('input[type="hidden"]').val("1");
})
})
以下是發送到服務器:
Processing by DesignerLayoutsController#update as HTML
Parameters: { ... "designer_layout"=>{"designer_panels_attributes"=>{"0"=>{"_destroy"=>"1", "id"=>"5"}}} ...
如您所見,具有值「1」的_destroy屬性與特定面板的ID一起發送。但是,屬於佈局的面板不會被刪除。爲什麼?
你能證明你的強大的參數去白名單的PARAMS? – dp7
def designer_layout_params params [:designer_layout] .permit! 結束 – Donato