Rails - 嵌套表单添加工作,但不删除记录

Dar*_*one 1 ruby-on-rails nested-forms

我在rails应用程序中使用嵌套表单,我有一个简单的父子设置:

楷模:

class Experiment < ActiveRecord::Base
    has_many :exptypes, :dependent => :destroy
        accepts_nested_attributes_for :exptypes, :allow_destroy => true

class Exptype < ActiveRecord::Base
    belongs_to :experiment
Run Code Online (Sandbox Code Playgroud)

浏览次数:

家长:

<%= nested_form_for(@experiment) do |f| %>
  <%= f.fields_for :exptypes do |builder| %>
    <%= render 'exptype_fields', :f => builder %>
  <% end %>
  <p><%= f.link_to_add "Add an Experimental Type", :exptypes %></p>
Run Code Online (Sandbox Code Playgroud)

儿童:

<h2>Experiment type</h2>
<p> 
  <div class="field">
    <%= f.link_to_remove "Remove this Experiment" %>
  </div>
  <div class="field">
    <%= f.label :type_name %><br>
    <%= f.text_field :type_name %>
  </div>
</p>
Run Code Online (Sandbox Code Playgroud)

添加许多孩子工作正常,但当我尝试从列表中删除任何(通过单击创建的按钮link_to_remove)时,嵌套表单消失,但是当我点击更新时,显示表单仍然显示"已删除"子项.

Dar*_*one 5

发现错误,:_destroy我的控制器中没有允许的参数.

希望这有助于其他人!

编辑:

我的控制器的强params方法如下所示:

def experiment_params
  params.require(:experiment).permit(:_destroy, :experiment_number, :date, :title, :pi, 
    :biocontrol_run_num, :goals, :description, :str, :exp_type)
end
Run Code Online (Sandbox Code Playgroud)