如何在rails表单对象中支持多参数属性?

时间:2017-10-20 15:06:44

标签: ruby-on-rails forms activerecord multiparameter

我有一个使用此处定义的模式的表单对象: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",
...

但是,我在控制器的unknown attribute 'date_of_birth(1i)' for RegistrationForm.操作中从RegistrationForm.new(registration_params)收到#create错误:

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

我已尝试为attr_accessor等定义其他:date_of_birth_1i, :date_of_birth_2i, :date_of_birth_3i,但尚未解决此问题。

我需要做什么才能正确处理多参数属性?

1 个答案:

答案 0 :(得分:0)

我需要include ActiveRecord::AttributeAssignment以及ActiveModel::Model,这解决了这个问题。