Rails 3.验证失败时,保持表单中嵌套字段的数量

时间:2012-09-13 17:08:54

标签: ruby-on-rails ruby

我有一个表格,我注册了学生和3个紧急联系人。 (emergency_contact属于学生)。

所以,StudentsController ......

def new
  @student = Student.new
   3.times {@student.emergency_contacts.build}
...

因此,让我们说,用户填写了学生信息,只有一个紧急联系人。验证因任何原因(可能未输入学生姓名)而失败,当表格重新显示时,输入第二个或第三个其他紧急联系人的字段将消失

当然,如果我也在创建操作中执行此3.times {@member.caregivers.build},那么每次验证失败时我都会获得越来越多的附加字段。

那么,即使验证失败,我怎样才能始终在表单中保留指定数量的嵌套模型?

1 个答案:

答案 0 :(得分:1)

在您的创建操作中,您可以执行以下操作:

if @student.save
  ...
else
 (3 - @student.emergency_contacts.size).times { @student.emergency_contacts.build }
end
希望它有所帮助。