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の製品を指定された会社に割り当てます。
これをRails 3で行う正しい方法は何ですか?
<%= f.collection_select :product_ids, Product.all, :id, :name, { :prompt => 'Select a product'},{ :multiple => true } %>
代わりに選択ドロップダウンボックスでこれを行う方法があります:
EDITは私のフォームで
、それはで動作しますか?製品の
未定義のメソッド 'product_idsを[] 'for#となります。最初の引数は、 –
@Christian Fazziniの関係にする必要があります。私は答えを更新しました。 – Hck
新しい提案にいくつかのタイプミスが修正されました。第2に、あなたの提案は、 –