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]
来处理,与对象类型无关。我不确定如何“真正强制转换模型”。这将解决您当前的问题。谢谢:)您非常了解的表单:)