2011-07-16 61 views
2

我知道如何在控制器中構建第二個對象,但是如何構建第三個或第四個對象?如何在控制器中構建嵌套窗體的子代

對我來說,我需要建立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 %> 

回答

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

+0

但它使用了「與時俱進」的能力,我不需要這個,我只是每個需要一個實例。 – LearningRoR

+1

然後不要循環,並刪除'times' :) – apneadiving

+0

你怎麼不循環?我不明白循環是什麼。 – LearningRoR

2

添加到您的控制器:在你ProductDate模型

def new 
    @location = Location.new 
    @product_dates = @location.product_dates.build 
    @product = @product_dates.product.build 
end 

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 %> 
+0

現在任何人想要顯示現有的日期,你可以添加一個if語句來測試它是否是一個新記錄。 – BKSpurgeon

相關問題