[問題] has_many :through 的 join table
Models:
class Product < ActiveRecord::Base
has_many :product_properties, :dependent => :destroy
has_many :properties, :through => :product_properties
accepts_nested_attributes_for :product_properties, :allow_destroy => true
end
class ProductProperty < ActiveRecord::Base
belongs_to :product
belongs_to :property
end
class Property < ActiveRecord::Base
has_many :product_properties, :dependent => :destroy
has_many :products, :through => :product_properties
end
ProductProperty有一個欄位value是記錄產品屬性的值。
/views/admin/products/_form.html.erb
<% Property.all.each_with_index do |property, index| %>
<%= check_box_tag "product[property_ids][]", property.id, @product.properties.include?(property) %>
<%= property.name %>
<% end %>
products_controller
def update
@product = Product.find(params[:id])
params[:product][:property_ids] ||= []
@product.update_attributes(params[:product])
end
目標是把所有的properties顯示出來,旁邊會有一個checkbox和textfield。
如果checkbox有被選取的話,textfield就會是那個property的value。
想問如何在新增或更新product的時候,同時更新value。
現在是不會寫 textfield 的那一部份,因為如果寫了下面寫兩行,會出現duplicate records。
<%= text_field_tag "product[product_properties_attributes][#{index}][id]", @product.product_properties.find_by_property_id(property).id %>
<%= text_field_tag "product[product_properties_attributes][#{index}][value]", @product.product_properties.find_by_property_id(property).value %>
環境:
e.g. Ruby 1.9.3 Rails 3.2.2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 182.93.56.102
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章