如何向公司添加产品?

时间:2011-07-05 11:02:42

标签: ruby-on-rails-3 nested-forms

在我的公司表格中,我希望能够直接添加产品。基本上,公司可以有很多产品。

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 } %>

有没有办法用选择下拉框来执行此操作?

1 个答案:

答案 0 :(得分:0)

使用产品的嵌套表格:

&lt;%= fields_for @ company.products do | product_fields | %GT;   &lt;%= product_fields.collection_select:product_id,Product.all,:id,:name,{:prompt =&gt; '选择产品'}%&gt; &lt;%end%&gt;