Имам потребител, който има_много услуги:
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])
Той запазва обекти, но не се чувствам добре с това... Благодаря за обяснението!