2014-11-06 93 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]