मैं product_suppliers को उत्पाद प्रपत्र के माध्यम से अपडेट करने का प्रयास कर रहा हूं। फॉर्म आपूर्तिकर्ता तालिका में सभी आपूर्तिकर्ताओं को प्रदर्शित करता है लेकिन यह शामिल तालिका को अपडेट नहीं करता है। सुनिश्चित नहीं है कि त्रुटि कहां है। इंडेक्स और शो सही विवरण दिखाते हैं लेकिन संपादन तालिका में अपडेट नहीं कर रहा है। इस पर सर्कल में चारों ओर घूमना शुरू कर दिया।ActiveAdmin Nested Form एकाधिक का चयन करें
अद्यतन: नीचे दिए गए फॉर्म को बदलने से मुझे करीब आ गया है। लेकिन अभी भी जॉइन टेबल अपडेट नहीं कर रहा है। हालांकि अगर मैं मैन्युअल रूप से जॉइन टेबल में पंक्तियां जोड़ता हूं तो अपेक्षित कार्यों को हटा दें। वे प्रदर्शित और हटाया जा सकता है। सेविंग पंक्ति में नया product_id जोड़ता है, केवल संबंधित supply_company_id मान नहीं। मैं इसे एक विशेषता मुद्दा समझता हूं लेकिन मैं इसे देख नहीं सकता।
एप्लिकेशन/मॉडल/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
एप्लिकेशन/मॉडल/supply_company.rb
class SupplyCompany < ActiveRecord::Base
has_many :products, :through => :product_suppliers
has_many :product_suppliers, :foreign_key => 'supply_company_id'
end
एप्लिकेशन/मॉडल/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
अद्यतन: नीचे मिला है मुझे पास करने के लिए प्रपत्र बदल रहा है। लेकिन अभी भी जॉइन टेबल अपडेट नहीं कर रहा है। हालांकि अगर मैं मैन्युअल रूप से जॉइन टेबल में पंक्तियां जोड़ता हूं तो अपेक्षित कार्यों को हटा दें। वे प्रदर्शित और हटाया जा सकता है। सेविंग पंक्ति में नया product_id जोड़ता है, केवल संबंधित आपूर्ति_company_id मान नहीं। मैं इसे एक विशेषता मुद्दा समझता हूं लेकिन मैं इसे देख नहीं सकता।
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