Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何提交以下类型的表单,RubyonRails?_Javascript_Ruby On Rails_Ruby_Forms - Fatal编程技术网

Javascript 如何提交以下类型的表单,RubyonRails?

Javascript 如何提交以下类型的表单,RubyonRails?,javascript,ruby-on-rails,ruby,forms,Javascript,Ruby On Rails,Ruby,Forms,我是FE开发的新手,如果我的问题很幼稚,那么很抱歉 我在rails中为用户提供了一个模型,它可以有多个配置文件。有不同类型的配置文件比如A,B,C。模型Profile有一个json字段详细信息,因此a,B&C有不同的字段详细信息 我正在创建一个具有用户字段的表单,然后在配置文件(嵌套属性)的a、B或C之间选择一个下拉列表,它将呈现一个部分表单(我正在使用js进行此操作)。每个配置文件类型中的某些字段都是必需的,因此如果我提交B类型配置文件,我将无法提交,因为A中的必需字段(A和C输入字段是隐藏的

我是FE开发的新手,如果我的问题很幼稚,那么很抱歉

我在rails中为
用户
提供了一个模型,它可以有多个
配置文件
。有不同类型的
配置文件
比如
A
B
C
。模型
Profile
有一个json字段详细信息,因此
a
B
&
C
有不同的字段详细信息

我正在创建一个具有
用户
字段的表单,然后在
配置文件
(嵌套属性)的
a
B
C
之间选择一个下拉列表,它将呈现一个部分表单(我正在使用js进行此操作)。每个配置文件类型中的某些字段都是
必需的
,因此如果我提交
B
类型配置文件,我将无法提交,因为
A
中的必需字段(
A
C
输入字段是隐藏的)。我如何提交这个?(提交按钮位于每个部分表单中,而不是外部,因此用户和配置文件必须同时保存)

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


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

我觉得您需要一个自定义验证,该验证采用模型类型(a、B或C),然后只检查该模型所需的字段是否存在。签出Rails文档,但其长短(在您的用户模型中):

自定义验证的工作方式是,如果在
错误中放入任何内容,验证将失败。然后由控制器中的您使用类似于
render json:@user.errors

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