次の関連付けを持つ Vendor モデル、Product モデル、および VendorProduct モデルがあります。
class Vendor < ActiveRecord::Base
has_many :vendor_products
has_many :products, through: :vendor_products
end
class Product < ActiveRecord::Base
has_many :vendor_products
has_many :vendors, through: :vendor_products
end
class VendorProduct < ActiveRecord::Base
belongs_to :vendor
belongs_to :product
end
ベンダー _form.html.erb ページで製品のドロップダウン コレクション選択オプションを表示するために、nested_form gem を使用しています。
<%= nested_form_for(@vendor) do |f| %>
<% if @vendor.errors.any? %>
:
:
:
<%= f.fields_for :vendor_products do |vproducts| %>
<%= render 'product_fields', :f => vproducts %>
<%= vproducts.link_to_remove "Remove this Product" %>
<% end %>  
<%= f.link_to_add "Add product", :vendor_products %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
私の _product_fields.html.erb は
<div class= "vendor_products">
<div class="field">
<%= f.label :product_id %><br>
<%= f.select :product_id,
options_from_collection_for_select(Product.all, "id",
"product_name"), prompt: "Select something", %>
 
<%= f.label :copies %>
<%= f.number_field :copies %>
</div>
</div>
私の Vendor モデルには、 vendor_products の次の Accepted_nested_attributes があります
class Vendor < ActiveRecord::Base
accepts_nested_attributes_for :vendor_products, :allow_destroy =>
true, :reject_if => :all_blank
end
私のベンダーコントローラーはこちら
def new
@vendor = Vendor.new
@vendor.vendor_products.build
end
def edit
@vendor.vendor_products.build
end
ベンダーと、正しく入力されたVendorProduct
ものを含みます。すべて問題なく動作します。唯一の問題は、ベンダー編集ページで、製品選択オプションに選択した値が表示されず、ドロップダウン リストの最初のオプションが表示されることです。ただし、行の値を確認すると、正しい製品がテーブルに追加されています。編集ページのドロップダウンのみに、実際に選択された値が表示されません。Product_id
Vendor_id
どうすればこれを修正できますか? 助けてください。