Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Ruby on rails 在多模型表单中跨多个子项设置默认值(Rails 2.3)_Ruby On Rails - Fatal编程技术网

Ruby on rails 在多模型表单中跨多个子项设置默认值(Rails 2.3)

Ruby on rails 在多模型表单中跨多个子项设置默认值(Rails 2.3),ruby-on-rails,Ruby On Rails,我试图简化多模型控制器的创建/编辑视图 用户可以动态地在表单中添加/删除子输入字段。(遵循Eloy的复杂形式示例) 我想限制用户跨多LPE子级设置某些属性的能力 假设我有一个子属性,我希望用户只输入一次日期。。所有孩子的日期都是一样的 我想呈现一个日期输入框,然后根据用户想要提交的儿童数量呈现多个成人框 对我的表单使用accepts_nested_attributes_会显示多个日期框 (因为我想保留作为管理员执行此操作的能力,所以我不想将日期属性移动到父级。) 我应该如何在不过度扩展控制器逻辑

我试图简化多模型控制器的创建/编辑视图

用户可以动态地在表单中添加/删除子输入字段。(遵循Eloy的复杂形式示例)

我想限制用户跨多LPE子级设置某些属性的能力

假设我有一个子属性,我希望用户只输入一次日期。。所有孩子的日期都是一样的

我想呈现一个日期输入框,然后根据用户想要提交的儿童数量呈现多个成人框

对我的表单使用accepts_nested_attributes_会显示多个日期框

(因为我想保留作为管理员执行此操作的能力,所以我不想将日期属性移动到父级。)


我应该如何在不过度扩展控制器逻辑的情况下调整表单?

如果您的业务逻辑表明您的所有子模型都具有相同的日期,那么我认为这有两种不同的工作方式

首先,也许你的数据放错地方了。如果所有子模型的日期总是相同的,那么为什么不将其作为父模型的属性呢?您可以在子模型中始终使用委托方法从父模型获取日期


我看到的另一种处理方法是在父模型上使用虚拟属性和回调。使用attr_访问器在父模型上创建虚拟属性。然后在表单中,将日期字段添加到父模型中,并使用用于定义attr_访问器的名称。最后,在父模型中添加一个before_save回调(或适用于您的情况的回调),将日期保存到所有子模型中。

Hi Jared,谢谢您的建议。遵循在父模型上使用虚拟属性的方法。只需重写save方法即可将值设置为子项。。