向后嵌套表格?

时间:2012-04-09 02:52:39

标签: ruby-on-rails

通常人们会创建嵌套表单,其中嵌套属性被“属于”主对象的对象接受...

例如:

class Brand < ActiveRecord::Base
  has_many :models
end

class Model < ActiveRecord::Base
  belongs_to :brand
end

因此,鉴于上述情况,人们可能希望为品牌制作一个嵌套形式,接受模型的嵌套属性。

这可能听起来很荒谬,但我想做的是创建一个模型表单,接受品牌的嵌套属性......这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以。

class Brand < ActiveRecord::Base
  has_many :models
end

class Model < ActiveRecord::Base
  belongs_to :brand
  accepts_nested_attributes_for :brands
end

在视图中生成

= form_for Model.new do |f|
  %p
    = f.label :name
    = f.text_field :name
  %p
    Brands:
    - 4.times do
      = f.fields_for :brand, Brand.new do |bf|
        = br.text_field :name
  ...

此表单将为此类品牌生成参数:

model: {
  name: "Shiny Ann",
  brands_attributes: {
    "0": {name: "Brand1"},
    "1": {name: "Brand2"},
    "2": {name: "Brand3"}
  }
}