0

Ich benutze Schienen 5, einfache Form. In meiner App gibt es ein Kategoriemodell und es gibt ein OnlineProduktmodell. Ich weiß nicht warum, wenn ich einige Kategorien zu meiner OnlineProduct Verbindungstabelle hinzufügen möchte, bleibt leer und ändert sich nicht.rails: association tabel (has_and_belongs_to_many) kein Datensatz speichern

Kategorie Modell:

class Category < ApplicationRecord 

    has_ancestry 

    has_and_belongs_to_many :internet_products 

end 

InternetProduct Modell:

class InternetProduct < ApplicationRecord 
    belongs_to :user 
    belongs_to :business 
    has_and_belongs_to_many :categories 
end 

InternetProduct Controller:

def new 
    @internet_product = InternetProduct.new 
    end 
    def create 
    @internet_product = InternetProduct.new(internet_product_params) 

    respond_to do |format| 
     if @internet_product.save 
      format.html { redirect_to @internet_product, notice: 'Internet product was successfully created.' } 
      format.json { render :show, status: :created, location: @internet_product } 
     else 
      format.html { render :new } 
      format.json { render json: @internet_product.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
private: 
def internet_product_params 
    params.require(:internet_product).permit(:name, :description, :mainpic, :terms_of_use, 
             :real_price, :price_discount, :percent_discount, 
             :start_date, :expire_date, :couponـlimitation, :slung, 
             :title, :meta_data, :meta_keyword, :enability, :status, 
             :like, :free_delivery, :garanty, :waranty, :money_back, 
             :user_id, :business_id, 
             categoriesـattributes: [:id, :title]) 
end 

und in der Ansicht nur der Teil, der zu den Kategorien beziehen:

<%= f.association :categories %> 

Alle Kategorien Liste in Sicht (Formular), aber wenn ich einige von ihnen nicht in der Datenbank speichern auswählen. in rails console mache ich das

p = InternetProduct.find(5) 
p.categories = Category.find(1,2,3) 

dies speichern in der datenbank ohne problem, was soll ich tun? Tanks zum Lesen dieser

+0

Sie haben und 'OnlineProduct' Join-Tabelle? – inye

+0

ja inye. das habe ich: 'class CategoriesInternetBons Armanlearn

+0

Ihre Frage bearbeiten und fügen Sie diese Migration und besser, wenn Sie Ihr Tabellenschema dieser drei Tabellen hinzufügen. – inye

Antwort

0

Ich habe eine Lösung gefunden, um dies zu lösen. wenn wir has_and_belong_to_many oder andere Beziehung zu verwenden, wenn Sie Sammlung auswählen in simple_form verwenden mögen, in dem Modell soll diesen Befehl auch für die Verschachtelung Form

accepts_nested_attributes_for :categories 

auch in der Steuerung in einem verwandten Verfahren zum Beispiel in der neu hinzufügen wir sollten

def new 
    @internet_product = InternetProduct.new 
    @internet_product.categories.build 
end 
Verwandte Themen