0

i использовать рельсы 5, простую форму. в моем приложении есть модель категории, и есть модель OnlineProduct. Я не знаю, почему, когда я хочу добавить некоторые категории в свою таблицу ассоциации OnlineProduct, они остаются пустыми и не меняются.рельсы: ассоциация tabel (has_and_belongs_to_many) не сохраняет записи

Категория Модель:

class Category < ApplicationRecord 

    has_ancestry 

    has_and_belongs_to_many :internet_products 

end 

InternetProduct модель:

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

InternetProduct контроллер:

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 

и с точки зрения только часть того, кто относится к категории:

<%= f.association :categories %> 

все категории в списке (форма), но когда я выбираю некоторые из них, не сохраняются в базе данных. in rails console Я делаю это

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

это сохранить в базу данных без проблем, что мне делать? танки для чтения этого

+0

у вас есть и 'OnlineProduct' объединяются? – inye

+0

да inye. это то, что у меня есть: 'class CategoriesInternetBons Armanlearn

+0

редактировать свой вопрос и добавить эту миграцию и лучше, если вы добавите таблицу Зонирование трех таблиц. – inye

ответ

0

Я нашел решение для решения этой проблемы. когда мы используем has_and_belong_to_many или любое другое отношение, если вы хотите использовать коллекцию выберите в simple_form, в модели должны быть также добавить эту команду для гнездования вида

accepts_nested_attributes_for :categories 

также в контроллере в родственной способе, например, в новом мы должны

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