0
Ich habe meine Update-Formular für Demozwecke vereinfacht:_destroy Attribut nicht Datensatz zu zerstören
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");
})
})
Hier finden Sie An den Server gesendet:
Processing by DesignerLayoutsController#update as HTML
Parameters: { ... "designer_layout"=>{"designer_panels_attributes"=>{"0"=>{"_destroy"=>"1", "id"=>"5"}}} ...
Wie Sie sehen können, wird das Attribut _destroy mit dem Wert "1" mit der ID des jeweiligen Bereichs gesendet. Das zum Layout gehörende Panel wird jedoch nicht gelöscht. Warum?
können Sie zeigen Ihre starke param Whitelist die params? – dp7
def designer_layout_params params [: designer_layout] .permit! Ende – Donato