Предварительно установите несколько флажков в Rails ActiveAdmin

#ruby-on-rails #activeadmin #formtastic

#ruby-on-rails #activeadmin #formtastic

Вопрос:

Мне нужно предварительно установить несколько флажков в форме для модели habtm в ActiveAdmin при создании нового объекта. Массив с идентификаторами вложенной модели, взятыми из массива в записи базы данных модели стороннего производителя. Моя текущая конфигурация:

 ActiveAdmin.register Hotel do
  permit_params page_ids:[]
  ...
  form do |f|
    ...
    f.inputs 'Pages' do
      f.input :pages, as: :check_boxes, collection: Page.order('position asc')
    end
    f.actions
  end
end

class Hotel < ApplicationRecord
  has_and_belongs_to_many :pages
  accepts_nested_attributes_for :pages
  ...
end

class Page < ApplicationRecord
  has_and_belongs_to_many :hotels
  ...
end
  

Массив с идентификаторами страниц, которые должны быть предварительно проверены:

 Setting.find_by_name("defined_pages_ids").value.split(',').map(amp;:to_i) # [1,2,3,4]
  

Какое решение мне нужно для реализации предварительной проверки?

Ответ №1:

Вам нужно переопределить создание нового экземпляра Hotel model и предварительно заполнить необходимые данные

   controller do

    def new
      @hotel = Hotel.new
      @hotel.pages << Page.all
    end

end
  

Комментарии:

1. Спасибо! Теперь все работает нормально. Дополнительные сведения для всех, кто, возможно, захочет реализовать что-то подобное: переопределение должно быть создано внутри в ActiveAdmin resouce, а идентификаторы для флажков должны быть переданы следующим образом @hotel.pages << Page.find([1,2,3,4]) .