如果字段对于嵌套表单不为空,则Rails仅保存记录
在我的Rails应用程序中,我有一个Kid
模型和一个Allergy
模型,其中一个Kid
has_many Allergies
。 我还创建了一个嵌套的表单,以便在创建一个新kid
时, allergy
字段是kid
forms。 这就是我在我的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? }