2011-07-05 3 views
1

회사 양식에 직접 제품을 추가하고 싶습니다. 기본적으로 회사는 많은 제품을 보유 할 수 있습니다.회사에 제품을 추가하는 방법?

class Company < ActiveRecord::Base 
    has_many :company_products 
    has_many :products, :through => :company_products 

    accepts_nested_attributes_for :products, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true 
end 

내 양식 :

<%= form_for(@company) do |f| %> 

    <ul> 

    <li class="clearfix"> 
     <%= f.label :company_name %> 
     <%= f.text_field :company_name %> 
    </li> 

    <li> 
     <%= f.collection_select :product_ids, Product.all, :id, :name, { :prompt => 'Select a product' } %> 
    </li> 

    <li> 
     <%= f.collection_select :product_ids, Product.all, :id, :name, { :prompt => 'Select a product' } %> 
    </li> 

    <li> 
     <%= f.collection_select :product_ids, Product.all, :id, :name, { :prompt => 'Select a product' } %> 
    </li> 
.... 

위, 정확히 작동하지 않습니다. 마지막으로 선택한 제품 만 추가하기 때문에 f.collection_select.

이것은 내가 달성하고자하는 것입니다. 콘솔에서 나는 다음을 수행한다 :

company.update_attributes({"product_ids"=>["1", "2", "3"]}) 

id가 1, 2 및 3 인 제품을 지정된 회사에 할당한다.

레일스 3에서이 작업을 수행하는 적절한 방법은 무엇입니까?

<%= f.collection_select :product_ids, Product.all, :id, :name, { :prompt => 'Select a product'},{ :multiple => true } %> 

대신 선택 드롭 다운 상자이 할 수있는 방법이 있나요 :

편집은 내 양식에서

, 그것은 작동? 제품에 대한

답변

0

를 사용하여 중첩 된 양식 :

<퍼센트는 = fields_for @ company.products 할 | product_fields | %> <퍼센트 = product_fields.collection_select : PRODUCT_ID, Product.all : ID, 이름, {프롬프트 => '에 해당하는 제품을 선택 "} %> <퍼센트 단부 %>

+0

정의 방법'product_ids를 [] 'for # . 첫 번째 인수는 –

+0

@Christian Fazzini의 관계 여야합니다. 나는 대답을 업데이트했습니다. – Hck

+0

새로운 제안에 약간의 오타가 수정되었습니다. 그렇지 않으면 몇 가지 오류가 발생합니다. 둘째로, 당신의 제안은 –

관련 문제