Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails中真正类型转换模型?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 如何在Rails中真正类型转换模型?

Ruby on rails 如何在Rails中真正类型转换模型?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有一个项目作为超类,它下面有两个子类 当用户第一次输入信息时,,params[:item]的散列中包含输入参数。我根据输入实例化了具体类型 # instantitate the concrete type according to the input type_of_item = Object::const_get(inputs[:type]) @item = type_of_item.new 当验证失败时,我将用户放回新页面。用户再次输入数据 然而,这一次,输入参数将包含在参数[:bidd

我有一个项目作为超类,它下面有两个子类

当用户第一次输入信息时,
params[:item]
的散列中包含输入参数。我根据输入实例化了具体类型

# instantitate the concrete type according to the input
type_of_item = Object::const_get(inputs[:type])
@item = type_of_item.new
当验证失败时,我将用户放回新页面。用户再次输入数据

然而,这一次,输入参数将包含在
参数[:bidding\u item]
参数[:direct\u item
的散列中,其中bidding\u item和direct\u item是item的子类

我试着做一些事情,比如:

format.html do
  @item.becomes(Item)
  render :action=>"new"
end
我希望每次输入参数都包含在
params[:item]
中,这样我每次都可以以相同的方式获取数据,但它不起作用

现在,我用解决我的问题。但我认为这根本不是一个好的做法

# form input
inputs = params[:item] || params[:bidding_item] || params[:direct_item]

在您的
新视图文件中,您可以将
:as
选项添加到
表单_中,用于
标记

form_for @item, :as => :item do |form|
这意味着参数将始终作为
params[:item]
来处理,与对象类型无关。

我不确定如何“真正强制转换模型”。这将解决您当前的问题。谢谢:)您非常了解
的表单:)