2017-01-12 1 views
0

Код:Сохранение вложенной has_many ассоциации на основе динамических флажков в активных Администратор

Бизнес-модель

class Business < ApplicationRecord 
    has_many :business_categories 
    has_many :categories, through: :business_categories 
    ...... 
end 

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

class Category < ApplicationRecord 
    has_many :services 
    has_many :business_categories 
    has_many :businesses, through: :business_categories 
    ..... 
end 

BusinessCategory Модель

class BusinessCategory < ApplicationRecord 
    belongs_to :business 
    belongs_to :category 
    has_many :business_category_services 
    has_many :services, through: :business_category_services 
    .... 
end 

class Service < ApplicationRecord 
    belongs_to :category 
end 

в й форме, которую я хочу спроектировать, посмотрите ниже снимок.

please have a look on snapshot

form do |f| 
    f.inputs 'Business' do 
    f.input :name 
    f.input :category_ids, as: :check_boxes, collection: Category.all.map{|category| [category.name, category.id]} 
    f.has_many :business_categories, :class=>'select_category', :heading=>'Services', :new_record=> true do |business_category| 
    business_category.input :service_ids, as: :check_boxes, collection: Service.all.map{|service| [service.name, service.id]}, :input_html => { :class => 'services_checkboxes'} 
    end 

in the snapshot как вы можете видеть - все категории и услуги Флажки исходя из категории и услуг таблицы через Category.all и Service.all.

и service_ids должен быть динамичным, я имею в виду, я должен видеть только те услуги, которые основаны на выбранной категории на шаге 2, а не на всех из них.

Как его реализовать?

ответ

0

Для новой записи (бизнеса), вы текущая форма это хорошо, но для редактирования ваша форма должна быть что-то вроде этого:

form do |f| 
    f.inputs 'Business' do 
    f.input :name 
    Category.all.each |category| do 
    check_box_tag :category_ids, category.id, @business.categories.include?(category), :name => 'business[category_ids][]' 
    label_tag :category_ids, category.id 
    end 
    f.has_many :business_categories, :class=>'select_category', :heading=>'Services', :new_record=> true do |business_category| 
    Service.all.each |service| do 
     check_box_tag :service_ids, service.id, business_category.services.include?(service), :name => 'business[business_categories][service_ids][]' 
     label_tag :service_ids, service.id 
    end 
    end 
end 

Ссылка: http://millarian.com/rails/quick-tip-has_many-through-checkboxes/

+0

@Muhammed для новой записи также мой код не за работой. –

+0

@Anand Вы можете использовать эту форму для новой записи также, пожалуйста, проверьте ссылку! –

+0

@Muhammed для новой записи также мой код неправильный. Снимки показывают что-то вроде html design , который мне нужно реализовать. И ссылка, которую вы поделили, верна, что category_ids => ["", "1", "2"] должны пройти в параметрах [: business], чтобы сохранить категории бизнеса. , и это происходит в моем случае также params => {: business => {: name => "xyz", "category_ids" => ["", "1", "2"]}}, и это будет сохранить записи в объединении таблица business_categories, потому что бизнес имеет много категорий , но я застрял на сохранении записей в таблице соединений business_category и службы –

Смежные вопросы