[問題] has_many :through 的 join table

看板Ruby作者 (momo)時間12年前 (2012/04/20 15:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
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
文章代碼(AID): #1FaHOZgT (Ruby)
文章代碼(AID): #1FaHOZgT (Ruby)