Rails嵌套形成新的关联

时间:2011-07-22 17:42:26

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

我目前正在创建一个包含一些嵌套属性的表单。相关部分是Sale模型(表单的主模型),Vehicle模型(sale has_one vehicle and vehicle belongs_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应该尝试创建这种关联,而不是找到现有的关联?我可能做错了什么想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过操作中间表(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">