我的产品拥有并属于许多 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。这是我无法解决的问题。地图表还附加了一个价格属性。
class MapProductPrice < ActiveRecord::Base
attr_accessible :product_link_id, :product_id, :price
belongs_to :product
belongs_to :product_link
我有一个多选框,可以在产品链接表单上选择一个或多个产品。但那是当我切换到 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_id 或 price 属性。如何将此设计转换为表单并使其工作?谢谢