我有一个Bike
模型和一个Component
模型。几个模型继承自Component
: Frame
,Chain
等Crankset
。
当我提交表单时,我的参数如下所示:
"bike" => { "frame" => { "id" => "4" }, "chain" => { "id" => "19" }, ... }
在我的控制器中,以下代码中断:
@bike = Bike.new(params[:bike])
> Frame(#90986230) expected, got HashWithIndifferentAccess(#81888970)
如果我破解我的表单以生成以下参数,它会起作用:
"bike" => { "frame_id" => "4", "chain_id" => "19" ... }
这是我的模型:
class Bike < ActiveRecord::Base
belongs_to :frame
belongs_to :chain
...
end
class Component < ActiveRecord::Base
has_many :bikes
end
class Frame < Component
end
单表继承正在工作 - 我可以毫无问题Frame.first
地调用。Component.all
我要疯了吗?嵌套参数不是通常的约定吗?这就是通过以下方式生成的:
- f.fields_for @bike.frame do |frame|
= frame.hidden_field :id
我究竟做错了什么??