我有一个使用此处定义的模式的表单对象:https://forum.upcase.com/t/form-objects/2267
class RegistrationForm
include ActiveModel::Model
attr_accessor :first_name, :last_name, :date_of_birth
...
end
与该示例不同,我的窗体中的一个基础模型具有日期字段。该日期字段通过简单形式呈现为多参数属性,并按以下方式提交到控制器:
"user"=>
{"first_name"=>"Hanna",
"last_name"=>"Macias",
"date_of_birth(1i)"=>"2016",
"date_of_birth(2i)"=>"2",
"date_of_birth(3i)"=>"26",
...
但是,我在控制器上的#create
操作中收到RegistrationForm.new(registration_params)
unknown attribute 'date_of_birth(1i)' for RegistrationForm.
错误:
def create
@registration = RegistrationForm.new(registration_params)
if @registration.save
redirect_to root_path
else
render 'new'
end
end
private
def registration_params
params.require(:registration).permit!
end
我尝试为:date_of_birth_1i, :date_of_birth_2i, :date_of_birth_3i
等定义额外的attr_accessor
,但这并没有解决问题。
我需要做什么才能正确处理多参数属性?
我需要include ActiveRecord::AttributeAssignment
和ActiveModel::Model
,这解决了这个问题。