2016-10-11 6 views
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"}}} ... 

ご覧のとおり、_destroy属性の値が「1」で、特定のパネルのIDとともに送信されます。ただし、レイアウトに属するパネルは削除されません。どうして?モデルで

+0

あなたがのparamsをホワイトリストにあなたの強いのparamを表示することができますか? – dp7

+0

def designer_layout_params params [:designer_layout] .permit! 終了 – Donato

答えて

1

設定allow_destroy: true

accepts_nested_attributes_for :designer_panels, allow_destroy: true 

そして、強いのparamを使用して_destroyをホワイトリストに登録してください:

params.require(:designer_layout).permit(designer_panels_attributes: [:id, :_destroy]) 
関連する問題