2015-06-01 6 views
6

मैं 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 

उत्तर

0

बाहर निकलता है यह मल्टीपार्ट था:: कोड में सत्य। एक बार जब मैंने इसे नीचे दिए गए कोड से हटा दिया, तो सबकुछ अपेक्षित के रूप में काम करता था।

 form(:html => {:multipart => true}) do |f| 
     f.inputs "Product Details" do 
     f.input :id 
     f.input :product_name 
     f.input :product_description 
     f.has_many :product_supply_companies do |ff| 
     ############################################### 
     #REMOVED multipart: :true from the line below 
     ############################################### 
     ff.input :supply_company_id, as: :select, collection: SupplyCompany.all.map {|u| [u.company_name.to_s, u.id]} 
     ff.input :_destroy, :as=>:boolean, :required => false, :label => 'Remove supplier' 
     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 
संबंधित मुद्दे