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

时间:2014-05-19 07:08:14

标签: 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

查看:

父:

<%= 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>

子:

<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>

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

1 个答案:

答案 0 :(得分: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