0

多くの product_links を持ち、それらに属している製品があります

class Product < ActiveRecord::Base

has_many :map_product_prices
has_many :product_links, :through => :map_product_prices
accepts_nested_attributes_for :product_links

と...

class ProductLink < ActiveRecord::Base

has_many :map_product_prices
has_many :products, :through => :map_product_prices
accepts_nested_attributes_for :products

これには Ryan Bates の「nested_form」gem を使用しています。これが私の脳を包むことができない問題です。マップ テーブルには、price 属性も関連付けられています。

class MapProductPrice < ActiveRecord::Base

attr_accessible :product_link_id, :product_id, :price

belongs_to :product
belongs_to :product_link

製品リンク フォームで 1 つまたは複数の製品を選択できる複数選択ボックスがありました。しかし、Ryans gem に切り替えてネストされたフォームを使用し、製品を選択するための単一の選択ボックスと、価格を入力するためのテキスト フィールドを使用できるようにしました。その後、必要に応じて追加/削除できます。

ここに私が持っているものがあります:

    <%= f.fields_for :products do |product| %>
        <%= product.select :product_id, options_for_select(select_options) %>
        <%= product.text_field :price %>
        <%= product.link_to_remove "Remove this product" %>
    <% end %>
    <p><%= f.link_to_add "Add a product", :products %></p>

これをどのように達成するのが最善かについてのアイデアはありますか?

このフォームから得られるのは、製品の product_id 属性がないことです。product_id は製品ではなくマッピング テーブルにあるため、これは理にかなっています。では、製品ではなく、このネストされた形式でマッピング テーブルを参照するにはどうすればよいでしょうか? 新しい製品を追加できるようにしたくありません。各マッピングの横に価格を追加して、既存の製品に新しいマッピングを追加できるようにしたいと考えています。

ありがとう

編集:私は自分のコードを編集して、私が試した多くのことを反映させました。ビューを見ると、product builder オブジェクトに product_id または price 属性がないことがわかります。このデザインをフォームに変換して機能させるにはどうすればよいですか? ありがとう

4

1 に答える 1