2014-11-06 74 views
0

我有两个型号:AsssessmentQuestion被组织这样的:belongs_to的ID没有被设置activeadmin

class Question < ActiveRecord::Base 
    belongs_to :assessment 

class Assessment < ActiveRecord::Base 
    has_many :questions 

我试图创建一个activeadmin(版本1.0.0)界面来创建评估并添加问题给他们。 到目前为止,我试图使一个问题标签:

ActiveAdmin.register Question do 
    permit_params :question_text, :question_type, :scale_min, :scale_max 

    form do |f| 
    f.inputs "Question Information" do 
     f.input :assessment, :as => :select, :collection => Assessment.non_daily_assessments 
     f.input :question_type, :as => :select, :collection => Question.human_readable_question_types.keys 
     f.input :question_text, :input_html => {:rows => 2, :cols => 10} 
     f.input :scale_min 
     f.input :scale_max 
    end 
    f.actions 
    end 

non_daily_assessments只是返回我能够从评估列表中选择所有评估 的一个子集,但是当我保存的问题,我带到“查看问题”页面的问题的assessment_id为空。

同样,如果我创建一个评估标签:

ActiveAdmin.register Assessment do 
    permit_params :name, :questions 

    form do |f| 
    f.inputs "Assessment Information" do 
     f.input :name, :input_html => {:rows => 1, :cols => 10} 
     f.has_many :questions, :allow_destroy => true, :heading => 'Questions' do |qf| 
     qf.input :question_type, :as => :select, :collection => Question.human_readable_question_types.keys 
     qf.input :question_text, :input_html => {:rows => 2, :cols => 10} 
     qf.input :scale_min 
     qf.input :scale_max 
     end 
    end 
    f.actions 
    end 

我能去一个特定的评估和开始添加的问题,但是当我重新加载页面他们走了。进入控制台,我发现问题已经创建,但他们的assessment_id的是nil,就像通过问题标签。

什么是为belongs_tohas_many关系创建activeadmin接口的正确方法?

让我知道你是否需要更多信息。

回答

1

您的permit_params不完整。看看这个答案:Nested form in activeadmin not saving updates

您需要添加:assessment_id到问题的部分permit_params,如果你希望能够与评估,你可能缺少评估模型accepts_nested_attributes_for :questions编辑问题,并且还需要将评估部分中的permit_params更改为类似于

permit_params :name, questions_attributes: [:id, :question_type, :question_text, :scale_min, :scale_max]