0

많은 제품이있는 모델 공급 업체가 있습니다. vendor.product 관계에 속한 기존 제품을 표시하지 않고 한 번에 많은 제품을 추가하고 싶습니다. 새로운 객체에 대한 양식 만 표시하려고합니다. 현재 모든 것이 작동하지만 추가 페이지에서 @ vendor.products 인 인스턴스 관계에 묶여있는 모든 객체를 얻고 있습니다. 양식에 그 관계를 사용하지 않으면 나는 어떤 분야도 얻지 못합니다. 여기 레일 중첩 된 리소스 - 많은 개체, 동일한 모델, 기존 개체가없는 하나의 양식

'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 메소드를 알지 못했다. –