У меня есть пользователь, который has_many services:
class User < ActiveRecord::Base
has_many :services
accepts_nested_attributes_for :services, :reject_if => lambda { |s| s[:name].blank? }, :allow_destroy => true
end
Вот мои действия контроллера (разработка)
def new
build_resource({})
5.times { resource.services.build }
...
end
def create
build_resource(sign_up_params)
resource.services.build(sign_up_params[:services_attributes])
...
end
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) do |u|
u.permit(:email, :password, :password_confirmation,
services_attributes: [:name])
end
end
Когда я отправляю свою форму, вот связанный хэш параметров:
{...,
"services_attributes"=>{
"0"=>{"name"=>"Test"},
"1"=>{"name"=>""},
"2"=>{"name"=>""},
"3"=>{"name"=>""},
...}
Дает мне следующую ошибку:
unknown attribute: 0
В этом случае я не знаю, как сохранить несколько объектов с сильными параметрами. У меня есть идея сделать что-то вроде этого:
в моем методе создания:
resource.services.build(sign_up_params[:services_attributes][:id])
Он сохраняет объекты, но меня это не устраивает... Спасибо за объяснение!