我是FE发展的新手,很抱歉,如果我的问题很天真。
我在user
的导轨中有一个模型,可以有多个profiles
。有不同类型的profiles
说A
,B
& C
。模型Profile
有一个json字段详细信息,因此A
,B
& C
详细介绍了不同的字段。
我正在创建一个包含user
个字段的表单,然后在A
,B
或C
之间为profile
选择一个下拉列表(嵌套属性) ,这将呈现部分形式(我正在使用js这样做)。每个配置文件类型中的某些字段为required
,因此,如果我提交B
类型配置文件,由于A
中的必填字段A
,我无法执行此操作& C
输入字段被隐藏)。我该如何提交? (提交按钮是每个部分形式,而不是外部,因此必须同时保存用户和个人资料)
另外,有没有更好的方法来渲染部分表单而不是渲染所有表单并隐藏它们?
此外,如何仅以部分形式加载脚本而不是所有部分(与上述问题有些相似)?
答案 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