ActiveAdmin, datetime и строгие параметры

У меня есть модель под названием Trainers с полем datetime под названием scheduled_interview, которое можно редактировать в ActiveAdmin:

f.input :scheduled_interview

Это создает 5 <select>s (для года, месяца, дня, часов и минут).

Я пробовал добавить каждый из:

permit_params :scheduled_interview => []

а также:

permit_params scheduled_interview: []

в ActiveAdmin.register Trainer do ...

Но при отправке формы я вижу:

Unpermitted parameters: scheduled_interview(1i), scheduled_interview(2i), scheduled_interview(3i), scheduled_interview(4i), scheduled_interview(5i)

Что я делаю не так с сильными параметрами?

Редактировать 1: здесь используется Rails 4, о чем я не совсем понял.

Изменить 2:

В контроллере трейнера:

def create
  @trainer = Trainer.new(application_params)
end

def application_params
  params.require(:trainer).permit(
    :name, :email, :scheduled_interview: []
  )
end

Использование только :scheduled_interview приводит к той же ошибке, что и выше.

Изменить 3:

Журнал при сохранении трейнера:

Started PATCH "/admin/prospective_trainers/trainer-id" for 10.0.2.2 at 2014-07-06 17:49:36 +0000
Processing by Admin::ProspectiveTrainersController#update as HTML
  Parameters: {"utf8"=>"✓", "prospective_trainers"=>{"name"=>"trainer name", "email"=>"[email protected]", "scheduled_interview(1i)"=>"2014", "scheduled_interview(2i)"=>"7", "scheduled_interview(3i)"=>"15", "scheduled_interview(4i)"=>"16", "scheduled_interview(5i)"=>"15"}, "commit"=>"Update Trainer", "id"=>"trainer-id"}
  AdminUser Load (1.2ms)  SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = 8 ORDER BY "admin_users"."id" ASC LIMIT 1
  Trainer Load (1.2ms)  SELECT "trainers".* FROM "trainers" WHERE "trainers"."slug" = 'trainer-id' ORDER BY "trainers"."id" ASC LIMIT 1
Unpermitted parameters: scheduled_interview(1i), scheduled_interview(2i), scheduled_interview(3i), scheduled_interview(4i), scheduled_interview(5i)
Unpermitted parameters: utf8, _method, commit, id
   (0.4ms)  BEGIN
   (0.4ms)  COMMIT
Redirected to http://localhost:3000/admin/prospective_trainers/trainer-id
  Trainer Load (1.0ms)  SELECT "trainers".* FROM "trainers" WHERE "trainers"."id" = $1 LIMIT 1  [["id", 327]]
Completed 302 Found in 167ms (ActiveRecord: 4.3ms)

Все остальные поля сохраняются нормально (имя, адрес электронной почты и т. Д.).


person Greg Annandale    schedule 06.07.2014    source источник
comment
Можете выложить свой strong params метод вашего контроллера? А также что произойдет, если вы просто дадите это как :scheduled_interview?   -  person Pavan    schedule 06.07.2014
comment
Спасибо, обновился с контроллером. :scheduled_interview генерирует ту же ошибку.   -  person Greg Annandale    schedule 06.07.2014
comment
Можете ли вы опубликовать сгенерированный журнал сервера?   -  person Pavan    schedule 06.07.2014


Ответы (2)


Решено: в trainer.rb ActiveAdmin я ошибочно поместил 2 permit_params, второе перекрыло первое. Исправлено следующим образом:

ActiveAdmin.register Trainer, as: "Prospective Trainers" do
    permit_params :name, :email, :scheduled_interview

Также удален :scheduled_interview из params.require(:trainer).permit(... моего контроллера тренера, поскольку он не имеет никакого отношения к ActiveAdmin.

person Greg Annandale    schedule 11.07.2014

Вам нужно добавить :scheduled_interview в ваш контроллер Trainers. Не в ActiveAdmin. ActiveAdmin просто просматривает ваши обычные модели и контроллеры, это неправильное место для назначения параметров.

person jkeuhlen    schedule 06.07.2014
comment
Но я полагаю, что в Rails 4 это делается в контроллерах, а не в моделях? Я также пробежался через это руководство Active Admin re. сильные параметры: github .com / gregbell / active_admin / blob / master / docs /. - person Greg Annandale; 06.07.2014
comment
да, извините неверное слово. Я исправил это, чтобы сказать контролер тренеров. - person jkeuhlen; 06.07.2014