Cocoon + Rails—如何在表单错误时访问对象数据(对于动态字段)

Cocoon + Rails—how to access object data on form error (for dynamic fields)

我有 cocoon 创建关联子表单,其中一个表单有 projectscodes

设置

/ 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]
)