我有一个 Item 作为超类,它下面有两个子类。
当用户第一次输入信息时,输入的参数都包含在hash中params[:item]
。我根据输入实例化具体类型。
# instantitate the concrete type according to the input
type_of_item = Object::const_get(inputs[:type])
@item = type_of_item.new
当验证失败时,我将用户放回新页面。用户再次输入数据
但是,这一次,输入参数将被包含在params[:bidding_item]
或params[:direct_item
其中bidding_item和direct_item是Item的子类的hash中
我尝试做类似的事情:
format.html do
@item.becomes(Item)
render :action=>"new"
end
我希望每次都包含输入参数,params[:item]
以便我每次都能以相同的方式获取数据,但它不起作用。
现在,我解决了我的问题。但我认为这根本不是一个好习惯。
# form input
inputs = params[:item] || params[:bidding_item] || params[:direct_item]