Я использую рельсы 4 с ActiveAdmin. Я создал пакетное действие с использованием настраиваемой формы для создания задачи с номером сборки для каждого выбранного устройства. Вот что мой код выглядит следующим образом:ActiveAdmin Batch Action Dynamic Form
ActiveAdmin.register Device do
def get_builds
builds = []
Build.all.each do |build|
builds << [
"[#{build.resource} - #{build.version}] #{build.file_name}",
build.id
]
end
return builds
end
batch_action :create_task, form: {
build: get_builds()
} do |ids, inputs|
build = Build.find(inputs[:build])
Device.where(id: ids).each do |device|
Task.create({
device: device,
build: build
})
end
redirect_to admin_tasks_path
end
end
Моя проблема заключается в том, что список сборки в бланке периодического действия является не освежает. Когда я запускаю свое приложение, у него есть список всех доступных сборок, но если я добавлю или удалю сборку, список сборки не будет обновлен.
Это, конечно, потому, что параметр формы оценивает мою функцию только один раз, но я не могу найти документацию о наличии «динамической» формы.
Работает отлично. Я тоже пробовал его с помощью лямбда, и он тоже работает. Любая причина, по которой вы выбираете Proc над лямбдой? – Gab
Сила привычки. Lambda на самом деле является более безопасным выбором, поскольку он корректно обрабатывает утверждения 'return'. – ahmacleod
Измените свой ответ, чтобы использовать Лямбду и плохо принять его. Я тоже считаю, что Lambda - более безопасный выбор, и это то, что я использовал в своем приложении. – Gab