我试图简化多模型控制器的创建/编辑视图。
用户可以从表单中添加/删除子输入字段。 (遵循了Eloy的复杂形式示例)
我想限制用户在multilpe子项中设置某些属性的能力..
假设我有一个子属性,我希望用户只输入一次日期...例如,所有孩子的日期都相同..
我想提供一个日期输入框,然后是多个Adults |老年人盒子取决于用户想要提交的孩子数量。
使用accepts_nested_attributes_for我的表单显示多个日期框..
(因为我想保留以管理员身份执行此操作的能力,我不想将日期属性移动到父级。)
如何在不必过多扩展控制器逻辑的情况下调整表单?
答案 0 :(得分:1)
如果您的业务逻辑表明您的所有子模型都具有相同的日期,那么我认为这有两种不同的方式。
首先,也许您的数据位置错误。如果所有子模型的日期总是相同,那么为什么不将它作为父模型的属性呢?您始终可以在子模型中使用委托方法从父级中获取日期。
我看到处理此问题的另一种方法是使用虚拟属性和父模型上的回调。使用attr_accessor在父模型上创建虚拟属性。然后在表单中,使用您用于定义attr_accessor的名称将日期字段添加到父模型。最后,在父模型中添加一个before_save回调(或适用于您的案例的回调),将日期保存到所有子项。