在活动管理员中创建相关记录时创建新关联

时间:2012-07-23 08:34:39

标签: ruby-on-rails ruby-on-rails-3 activeadmin

我有这两个模型

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为Case模型创建管理界面,所以当我创建新案例时,我可以同时为它创建新客户端,所以我在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)

所以有什么帮助,请问这里缺少什么?

1 个答案:

答案 0 :(得分: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