如果字段对于嵌套表单不为空,则Rails仅保存记录

在我的Rails应用程序中,我有一个Kid模型和一个Allergy模型,其中一个Kid has_many Allergies 。 我还创建了一个嵌套的表单,以便在创建一个新kid时, allergy字段是kidforms。 这就是我在我的kid控制器中所拥有的:

 def new @kid = Kid.new allergy = @kid.allergies.build end 

这是我的index.html.erb嵌套在我的创建kid表单中:

       

这适用于在Allergy模型中插入一个allergy记录,但我希望能够列出多达5个allergy输入,并且只插入用户填充的那些,因为kid可能有不同程度的allergies

我用过这篇文章: http : //vicfriedman.github.io/blog/2015/07/18/create-multiple-objects-from-single-form-in-rails/

但是,我无法使这个工作成为嵌套表单。 感谢所有帮助!

要获得关系的多个嵌套表单,您需要构建要在表单中显示的相关项目的数量,如:

 def new @kid = Kid.new 5.times do @kid.allergies.build end end 

然后拒绝保存数据库中的任何空关系,在模型中你可以使用类似的东西:

 accepts_nested_attributes_for :allergies, reject_if: ->(allergy){ allergy['description'].blank? && allergy['symptoms'].blank? }