2

多対多の関連付けを介して、スーパーマーケット、製品、および供給の3つのテーブルがあります。各スーパーマーケットは多くの製品を保持でき、各製品は多くのスーパーマーケットで販売できます。関連付けは、供給モデルを介して構築されます。

スーパーマーケット:

class Supermarket < ActiveRecord::Base
  attr_accessible :name, :address, :products_attributes

  has_many :supplies
  has_many :products, :through => :supplies

  accepts_nested_attributes_for :products
end

製品:

class Product < ActiveRecord::Base
  attr_accessible :name, :supermarkets_attributes

  has_many :supplies
  has_many :supermarkets, :through => :supplies
  accepts_nested_attributes_for :supermarkets
end

供給による関連付け:

class Supply < ActiveRecord::Base
  attr_accessible :supermarket_id, :product_id

  belongs_to :supermarket
  belongs_to :product
end

足場を作成し、スーパーマーケットのテーブルにデータを入力しました。私の製品フォームで、1つ(または複数)のドロップダウンメニューを使用して、対応するスーパーマーケット名を選択したいと思います。目標は、新しい製品を作成すると同時に、供給テーブルを介して関連付けを作成することです。そこから対応するスーパーマーケットを選択したい場合、製品のフォームやコントローラーのコードはどのようになりますか?

4

2 に答える 2

4

製品フォームで、この行を追加する必要があります...

<%= collection_select(:product, :supermarket_ids, SuperMarket.all, :id, :name, {}, { :multiple => true } )%>

また、これにはaccepts_nested_attributesを使用する必要はありません。残りは、すでに設定した多対多の関連付けで処理する必要があります。

于 2012-09-13T17:54:30.640 に答える
0

ビューで考える

<%= f.collection_select "super_market_ids[]",@super_markets,:id,:name,{},{:multiple=>"multiple'} %>

super_market_idsor super_market_ids[]and 構文については、一度確認しただけではわかりません。

チェックボックスタイプの複数選択が必要な場合は選択タグで、より良いUIを構築するのに役立つ選択されたライブラリがあります。

于 2012-09-13T12:52:18.257 に答える