0

我有一個模型供應商,它有很多產品。我想一次添加許多產品,而不顯示屬於vendor.product關係的現有產品。我只想顯示新對象的表單。目前一切正常,但在添加頁面上,我得到了與@ vendor.products實例關係相關的所有對象。如果我沒有在表單中使用這種關係,我沒有任何字段。Rails嵌套資源 - 許多對象,相同的模型,一個沒有現有對象的表單

這是我的新產品動作:

'def new 
    @vendor = Vendor.find(params[:vendor_id]) 
    5.times {@vendor.products.build} 

    end' 

這裏是我的形式:

<%= form_for @vendor do |f| %> 

    <%= f.fields_for :products do |g| %> 
    <p> 
    <%= g.label :name %> 
    <%= g.text_field :name %> 
    <%= g.label :category %> 
    <%= g.select :category, options_for_select(['Parts', 'Labor', 'Extras', 'Shop']) %><br> 
    </p> 
    <% end %> 
    <p><%= f.submit "Submit" %></p> 
<% end %> 

產品型號:

class Product < ActiveRecord::Base 
    belongs_to :vendors 
    attr_accessible :name, :category, :vendor_id, :vendor_sku, :products 
    validates :name, :uniqueness => true 
    validates :category, :presence => true 
    validates :name, :presence =>true 
end 

只是重申,我只想展示空白的新建物品,而不是與所有與@vendor關係相關的產品。我必須忽略一個表單結構來完成這個任務,但我一直無法弄清楚。感謝您的期待。

回答

1

如果新記錄中的產品只呈現嵌套字段。

<%= form_for @vendor do |f| %> 

    <%= f.fields_for :products do |g| %> 
    <% if g.object.new_record? %> 
     <p> 
     <%= g.label :name %> 
     <%= g.text_field :name %> 
     <%= g.label :category %> 
     <%= g.select :category, options_for_select(['Parts', 'Labor', 'Extras', 'Shop']) %><br> 
     </p> 
    <% end %> 
    <% end %> 
    <p><%= f.submit "Submit" %></p> 
<% end %> 
+0

謝謝!我沒有意識到new_record方法。 –

相關問題