如何提交以下类型的表单,Ruby on Rails?

时间:2016-02-15 15:23:18

标签: javascript ruby-on-rails ruby forms html-form

我是FE发展的新手,很抱歉,如果我的问题很天真。

我在user的导轨中有一个模型,可以有多个profiles。有不同类型的profilesAB& C。模型Profile有一个json字段详细信息,因此AB& C详细介绍了不同的字段。

我正在创建一个包含user个字段的表单,然后在ABC之间为profile选择一个下拉列表(嵌套属性) ,这将呈现部分形式(我正在使用js这样做)。每个配置文件类型中的某些字段为required,因此,如果我提交B类型配置文件,由于A中的必填字段A,我无法执行此操作& C输入字段被隐藏)。我该如何提交? (提交按钮是每个部分形式,而不是外部,因此必须同时保存用户和个人资料)

另外,有没有更好的方法来渲染部分表单而不是渲染所有表单并隐藏它们?

此外,如何仅以部分形式加载脚本而不是所有部分(与上述问题有些相似)?

1 个答案:

答案 0 :(得分:0)

听起来我需要一个自定义验证,它接受模型类型(A,B或C),然后检查是否只存在该模型所需的字段。查看custom validations的Rails文档,但它的长短不一(在用户模型中):

put validates :check_presence

def check_presence
  if this.model == "a"
    errors[:fieldX] = "cannot be empty" if this.fieldX.empty? 
  elsif this.model == "b"
    etc...
  end
end

自定义验证的工作方式是,如果您在errors中放置任何内容,则验证失败。您可以在控制器中使用render json: @user.errors

之类的内容来渲染该错误