решаемая.Я нашел способ объявления переменных в самом коде ресурса администратора.
ActiveAdmin.register Score, as: 'Delivery' do
...
EXPORT_INPUTS = DistributionChain.all + Shop.not_distribution_chain
EXPORT_INPUTS_DATA = EXPORT_INPUTS.collect.with_index{ |e, i| [e.name, i] }
...
batch_action :export, form: {shops: EXPORT_INPUTS_DATA } do |ids, inputs|
element = EXPORT_INPUTS[inputs['shops'].to_i]
...
end
...
end
EXPORT_INPUTS
содержит фактический набор элементов из нескольких классов.
EXPORT_INPUTS_DATA
- это переменная (массив) для использования в форме и имеет имя и индекс элементов в массиве.Выбранный индекс может быть получен позже, поскольку inputs['shops']
и EXPORT_INPUTS[inputs['shops'].to_i]
точно соответствуют требуемому элементу.
NB : EXPORT_INPUTS_DATA
должно быть определено вне действия.Если вы напишите
batch_action :export, form: {shops: EXPORT_INPUTS.collect.with_index{ |e, i| [e.name, i] } }
напрямую, inputs['shops']
будет равен только идентификатору элемента в соответствующем классе, который нам ничего не говорит.