Rails 4 допускает вложенный хеш с динамическими ключами - PullRequest
0 голосов
/ 06 июля 2018

Проблемы с разрешением вложенного хэша с динамическими ключами в параметрах. Я упоминал другие подобные вопросы о переполнении стека, но пока не повезло. Любая помощь очень ценится. Ниже приведена ошибка.

ActionController :: UnpermittedParameters найдены недопустимые параметры: добровольные_слуги_атрибуты, sign_up_slots_attributes

{"event"=>{
"name"=>"ss", 
"volunteers_slots_attributes"=>{
"0"=>{"_destroy"=>"false", "needed_count"=>""},
"1"=>{"_destroy"=>"false", "needed_count"=>""},
... 
}, 
"sign_up_slots_attributes"=>{
"0"=>{"_destroy"=>"false", "title"=>"", "quantity"=>""}, 
"1"=>{"_destroy"=>"false", "title"=>"", "quantity"=>""}, 
"2"=>{"_destroy"=>"false", "title"=>"", "quantity"=>""},
 .... 
}, 
"supplies_note"=>""}}

Контроллер:

 def event_params
    params[:event].permit(:name,:supplies_note,
    :volunteers_slots_attributes,
    :sign_up_slots_attributes)
 end

Модель события:

  accepts_nested_attributes_for :sign_up_slots, allow_destroy: true, reject_if: :all_blank
  accepts_nested_attributes_for :volunteers_slots, allow_destroy: true, reject_if: :all_blank

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

У вас всегда может быть что-то вроде params[:event].permit(:name: volunteers_slots_attributes: ['0', '1']) для разрешения атрибутов вложения.

0 голосов
/ 09 июля 2018

Вы должны изменить свои сильные параметры, как

params.require(:event).permit( :name, :supplies_note, volunteers_slots_attributes: [ :_destroy, :needed_count ], sign_up_slots_attributes: [ :_destroy, :title, :quantity ] )

0 голосов
/ 06 июля 2018

Необходимо убедиться, что файл модели event.rb принимает вложенные атрибуты.

В вашем случае в нем должно быть несколько строк:

accepts_nested_attributes_for :volunteers_slots, reject_if: :all_blank, allow_destroy: true
accepts_nested_attributes_for :sign_up_slots, reject_if: :all_blank, allow_destroy: true
# ...
...