Cocoon + Rails—如何在表单错误时访问对象数据(对于动态字段)
Cocoon + Rails—how to access object data on form error (for dynamic fields)
我有 cocoon 创建关联子表单,其中一个表单有 projects
和 codes
设置
/ view (in slim format)
.nested-fields.subform.project-subform
= link_to_remove_association "×", f
#project-code-container
.form_group
= f.label :project_id, "Project"
= f.select(:project_id,
@current_projects.map { |project| [project.name, project.id] },
{},
{ onChange: "updateCodes(this)" },
)
.form_group
= f.label :project_code_id, "Code"
= f.select(:project_code_id, @current_project_codes[1])
第二个 select 应该显示基于 selected 项目索引的代码列表。因此,如果项目 3
是 selected,那么代码的选项应该是 @current_project_codes[3]
问题
当我在提交时遇到验证错误时,表单会重新加载之前已填写的数据(就像普通的 rails 表单一样)。但是,我不知道如何告诉 project_code
select 它应该加载哪些选项。由于这是一个茧形式,我没有像 @project
这样的对象来访问数据。
我需要弄清楚 project
是什么 selected,这样我才能显示正确的代码。
在验证时error/reload,如何获取 cocoon 对象的数据?
p.s。我正在努力定义这个问题,如果您有关于如何使我的问题更清楚的想法,请告诉我。
感谢@arieljuod
f.object
给出表单的对象及其数据
对于我的具体问题,这是允许 select 自动填充任何预保存数据的行:
f.select(
:project_code_id,
@current_project_codes[f.object.project_id || @current_projects.first.id]
)
我有 cocoon 创建关联子表单,其中一个表单有 projects
和 codes
设置
/ view (in slim format)
.nested-fields.subform.project-subform
= link_to_remove_association "×", f
#project-code-container
.form_group
= f.label :project_id, "Project"
= f.select(:project_id,
@current_projects.map { |project| [project.name, project.id] },
{},
{ onChange: "updateCodes(this)" },
)
.form_group
= f.label :project_code_id, "Code"
= f.select(:project_code_id, @current_project_codes[1])
第二个 select 应该显示基于 selected 项目索引的代码列表。因此,如果项目 3
是 selected,那么代码的选项应该是 @current_project_codes[3]
问题
当我在提交时遇到验证错误时,表单会重新加载之前已填写的数据(就像普通的 rails 表单一样)。但是,我不知道如何告诉 project_code
select 它应该加载哪些选项。由于这是一个茧形式,我没有像 @project
这样的对象来访问数据。
我需要弄清楚 project
是什么 selected,这样我才能显示正确的代码。
在验证时error/reload,如何获取 cocoon 对象的数据?
p.s。我正在努力定义这个问题,如果您有关于如何使我的问题更清楚的想法,请告诉我。
感谢@arieljuod
f.object
给出表单的对象及其数据
对于我的具体问题,这是允许 select 自动填充任何预保存数据的行:
f.select(
:project_code_id,
@current_project_codes[f.object.project_id || @current_projects.first.id]
)