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

时间:2017-01-20 01:08:42

标签: ruby-on-rails forms

在我的Rails应用程序中,我有Allergy模型和Kid模型,其中Allergies has_many allergy。我还创建了一个嵌套表单,以便在创建新kidkid字段位于kid表单中。这就是我在def new @kid = Kid.new allergy = @kid.allergies.build end 控制器中的内容:

kid

这是我的index.html.erb嵌套在我的创建<%= f.fields_for :allergies, Allergy.new do |u| %> <%= u.label :description, "Description", class: "control-label" %> <%= u.text_field :description, class: "input-sm form-control" %> <%= u.label :symptoms, "Symptoms", class: "control-label", %> <%= u.text_field :symptoms, class: "input-sm form-control" %> <%end%> 表单中:

allergy

这适用于仅在Allergy模型中插入一条allergy条记录,但我希望能够列出最多5条kid条输入,并且仅插入那些用户填写,因为allergies可能有onDestroy()的可变数量。

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

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

1 个答案:

答案 0 :(得分:0)

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

createUserSuccess

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

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