Ürün formu aracılığıyla ürün güncellemelerini güncellemeye çalışıyorum. Form, tedarikçi tablosundaki tüm tedarikçileri gösterir, ancak birleştirme tablosunu güncellemez. Hatanın nerede bulunduğundan emin değil. Dizin ve şov, doğru ayrıntıları gösterir ancak düzenleme, birleştirme tablosunu güncellememektedir. Bu çevrede etrafta dolaşmaya başlıyor.ActiveAdmin İç İçe Form Birden çok seç
Güncelleme: Aşağıdaki formu değiştirmek bana yakın var. Ama hala birleştirme tablosunu güncelleştirmiyor. Ancak, birleştirme tablosuna satırları el ile eklediğimde silme beklendiği gibi çalışır. Onlar görüntülenir ve silinebilir. Kaydetme, yeni supply_company_id değerinin değil, yalnızca yeni product_id satırına ekler. Onun bir özellik sorunu olduğunu anlıyorum ama göremiyorum.
uygulama/modeller/product.rb
class Product < ActiveRecord::Base
### shortned for clarity
has_many :product_suppliers, :foreign_key => 'product_id'
has_many :supply_companies, :through => :product_suppliers
accepts_nested_attributes_for :product_suppliers, :allow_destroy => true
end
uygulama/modeller/supply_company.rb
class SupplyCompany < ActiveRecord::Base
has_many :products, :through => :product_suppliers
has_many :product_suppliers, :foreign_key => 'supply_company_id'
end
uygulama/modeller/product_supplier.rb
class ProductSupplier < ActiveRecord::Base
belongs_to :product
belongs_to :supply_company
accepts_nested_attributes_for :product
accepts_nested_attributes_for :supply_company
end
/app/admin/product.rb
ActiveAdmin.register Product do
# See permitted parameters documentation:
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
#
permit_params :id, :product_name, :product_description, :product_type_id, :product_category_id, :product_colour_id, :product_size_id,
product_images_attributes: [:id, :product_id, :product_image, :_destroy],
product_types_attributes: [:id, :product_type],
product_catergories_attributes: [:id, :product_category],
product_colour_attributes: [:id, :product_colour],
product_size_attributes: [:id, :product_size],
product_suppliers_attributes: [:id, :product_id, :supply_company_id, :_destroy],
supply_companies_attributes: [:id, :company_name]
form(:html => {:multipart => true}) do |f|
f.inputs "Product Details" do
f.input :id
f.input :product_name
f.input :product_description
#######################################################################
# Problem Lies with this piece of code Not saving the supply_company_id
# when adding a new row or updating the old rows. Delete works fine.
# cant see the error in models or permited_params.......
#######################################################################
f.inputs "Suppliers" do
f.has_many :product_suppliers do |ff|
ff.input :supply_company_id, as: :select, multiple: true, collection: SupplyCompany.all.map {|u| [u.company_name.to_s, u.id]}
ff.input :_destroy, :as=>:boolean, :required => false, :label => 'Remove supplier'
end
end
########################################################
f.input :product_type_id, :as => :select, :collection => ProductType.all.map {|u| [u.product_type.to_s, u.id]}
f.input :product_category_id, :as => :select, :collection => ProductCategory.all.map {|u| [u.product_category.to_s, u.id]}
f.input :product_colour_id, :as => :select, :collection => ProductColour.all.map {|u| [u.product_colour.to_s, u.id]}
f.input :product_size_id, :as => :select, :collection => ProductSize.all.map {|u| [u.product_size.to_s, u.id]}
end
f.inputs "Product images" do
f.has_many :product_images do |p|
p.input :product_image, :as => :file, :label => "Image",:hint => image_tag(p.object.product_image.url(:thumb))
p.input :_destroy, :as=>:boolean, :required => false, :label => 'Remove image'
end
end
f.actions
end
product_suppliers_schema
create_table "product_suppliers", force: true do |t|
t.integer "product_id"
t.integer "supply_company_id"
t.datetime "created_at"
t.datetime "updated_at"
end
Güncelleme: aşağıda var bana yakın formu değiştirme. Ama hala birleştirme tablosunu güncelleştirmiyor. Ancak, birleştirme tablosuna satırları el ile eklediğimde silme beklendiği gibi çalışır. Onlar görüntülenir ve silinebilir. Kaydetme, yeni supply_company_id değeri değil, yalnızca yeni product_id satırına ekler. Onun bir özellik sorunu olduğunu anlıyorum ama göremiyorum.
f.inputs "Suppliers" do
f.has_many :product_suppliers do |ff|
ff.input :supply_company_id, as: :select, multiple: true, collection: SupplyCompany.all.map {|u| [u.company_name.to_s, u.id]}
ff.input :_destroy, :as=>:boolean, :required => false, :label => 'Remove supplier'
end
end