【问题标题】:Rails nested form new associationRails 嵌套形成新的关联
【发布时间】:2011-07-22 17:42:26
【问题描述】:

我目前正在创建一个带有一些嵌套属性的表单。相关部分是有一个Sale 模型(表单的主模型),一个Vehicle 模型(销售 has_one 车辆和车辆属于_to sale)和一个 Registration_number 模型(多对多车辆,通过分配表)。

我正在使用出色的 Flexbox JQuery 插件,它允许选择现有项目或创建新项目。

因为我使用的是 Flexbox,所以有问题的字段大部分是用 html 编码的,绕过了 rails 助手。

当我尝试创建一个新的注册号(使用字段名称sale[vehicle_attributes][registration_numbers_attributes][0][number])时,一切正常,创建了一个新的注册号并将其分配给车辆。但是,当我尝试分配现有的注册号(使用字段名称 sale[vehicle_attributes][registration_numbers_attributes][id])时,出现以下错误:

Couldn't find RegistrationNumber with ID=3 for Vehicle with ID=5

这似乎没有多大意义——在我看来,Rails 应该尝试创建这个关联,而不是找到现有的关联?有什么想法我可能做错了吗?

谢谢!

【问题讨论】:

  • 更新:我相信这可能与这里的问题有关:stackoverflow.com/questions/5398862/…,尽管接受的答案表明这是在四月份进行的,并且查看 Github 线程似乎代码现在已经合并到Master。由于我使用的是 Rails 3.1,任何人都可以指出现在是否应该修复这个问题,以及是否应该使用任何不同的语法?

标签: ruby-on-rails ruby-on-rails-3 nested-forms


【解决方案1】:

您可以通过操作中间表来实现这一点,这里是assignment

插入你的模型:

accepts_nested_attributes_for :assignments

在你的 html 中,追加这一行:

<input name="sale[vehicle_attributes][assignments_attributes][0][registration_number_id]" value="the_registration_number_id_goes_here" type="hidden">

【讨论】:

  • 谢谢,这似乎有效......虽然直接操作关联表似乎不是很“rails-esque”。我最初尝试做的事情是否不受支持?
  • 标记为正确答案,因为这清楚地回答了问题,但仍会对有关此方法的正确性的意见感兴趣。
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多