#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])
.