我有一个创建列表的表单 - 但我希望它创建一些关联的记录。我的模型结构如下:
has_and_belongs_to_many
卡片(如名片)belongs_to
公司(公司可以拥有多张名片)当我提交此表单时,我想一次性创建一个列表,一张卡片和一个公司。还应该运行验证。
现在我明白,如果我想在我的清单表格中加入一个卡片字段,我将会使用以下内容:
@card = @listing.cards.build
[...]
fields_for(@listing, @card) do |c|
但是,如果我想在表单中包含公司字段,该怎么办?我查了一下,但@card.company
是零。
答案 0 :(得分:1)
简短回答:
构建card
不会自动创建关联的company
答案很长
如果你想创建一个company
,恕我直言的最合理的方式是从listing
开始并围绕它创建关联甚至。
这样看:
listing
和company
可以自行存在card
预先假定存在company
listing
和card
通过联接表关联 Ergo:如果您要创建具有关联listing
的{{1}},则还需要card
所属的company
。因此,我们会将公司放在层次结构之上,并执行以下操作:
card
分别在您的嵌套表单中,您的class CompanyController < ApplicationController
...
def new
@company = Company.new
@card = @company.cards.build
@listing = @card.listings.build
end
...
end
位于顶部,company
位于下方,card
位于最后:
listing
答案 1 :(得分:0)
您应该使用fields_for
表单助手
http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for
或者使用宝石之类的 https://github.com/ryanb/nested_form