我知道如何在控制器中构建第二个对象,但是如何构建第三个或第四个?
在我的情况下,我需要建立3。
Location - has_many :product_dates, :products
ProductDate - has_many :products & belongs_to :location
Product - belongs_to :location, :product_date
我轻松构建位置和产品日期:
def new
@location = Location.new
@location.product_dates.build
end
现在我需要在表单上构建产品。谁能告诉我怎么做?
编辑:完整答案:
def new
@location = Location.new
product_date = @location.product_dates.build
product_date.products.build
end
<%= form_for @location do |f| %>
<%= f.text_field :business %>
<%= f.text_field :address %>
<%= f.fields_for :product_dates do |date| %>
<%= date.date_select :date %>
<%= date.fields_for :products do |product| %>
<%= product.text_field :name %>
<%= product.text_field :price %>
<%= product.text_field :tag_list %>
<% end %>
<% end %>
<%= f.submit "Create" %>
<% end %>
答案 0 :(得分:4)
您将学习所有内容in video here。
编辑:
用以下内容更改嵌套部分:
<%= f.fields_for :product_dates do |date| %>
<%= date.date_select :date %>
<%= date.fields_for :products do |product| %>
<%= product.text_field :name %>
<%= product.text_field :price %>
<%= product.text_field :tag_list %>
<% end %>
<% end %>
因为products
嵌套在product_dates
答案 1 :(得分:2)
添加到您的控制器:
def new
@location = Location.new
@product_dates = @location.product_dates.build
@product = @product_dates.product.build
end
在您的ProductDate模型中:
class ProductDate < ActiveRecord::Base
accepts_nested_attributes_for :products
...
你的位置模型:
class Location < ActiveRecord::Base
accepts_nested_attributes_for :product_dates
...
你的形式应该是这样的:
<% f.fields_for :product_dates do |date| %>
<%= date.text_field :content %>
<% date.fields_for :products do |product| %>
<%= product.text_field :content %>
<%end %>
<% end %>