2

我有这两个模型

class Case < ActiveRecord::Base
  belongs_to :client, :class_name => 'User'
end

class User < ActiveRecord::Base
  has_one :requested_case, :class_name => 'Case', :foreign_key => :requested_case_id
end

我想使用 Active Admin 为案例模型创建管理接口,所以当我创建新案例时,我可以同时为其创建新客户端,所以我在 app/admin/cases.rb 文件中编写了以下代码行

ActiveAdmin.register Case do
    form do |f|
        f.inputs "Basic Details"
            f.input :title
            f.input :Description
        end

        f.inputs :name => "Client Details", :for => :client do |c|
            c.input :name
            c.input :mobile
        end
        f.buttons
    end
end

所以当我提交客户的输入并单击提交时,我收到了这个错误

ActiveRecord::AssociationTypeMismatch in Admin::CasesController#create
User(#-625154418) expected, got ActiveSupport::HashWithIndifferentAccess(#82665960)

所以任何帮助请这里缺少什么?

4

1 回答 1

2

只需添加到您的app/admin/cases.rb文件中

controller do
    def new
        @case = Case.new
        @case.build_client
    end
end

并且不要忘记添加accepts_nested_attributes_for 到您的case模型中

 accepts_nested_attributes_for :client
于 2012-07-26T21:42:11.597 回答