我有两个模型:Asssessment
和Question
,其组织方式如下:
class Question < ActiveRecord::Base
belongs_to :assessment
class Assessment < ActiveRecord::Base
has_many :questions
我正在尝试创建一个activeadmin(ver 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_to
has_many
关系创建activeadmin界面的正确方法是什么?
如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
您的permit_params不完整。看看这个答案:Nested form in activeadmin not saving updates
您需要在问题部分的permit_params中添加:assessment_id
,如果您希望能够使用评估编辑问题,那么您可能错过了评估模型中的accepts_nested_attributes_for :questions
,并且您还需要将评估部分中的permit_params更改为
permit_params :name, questions_attributes: [:id, :question_type, :question_text, :scale_min, :scale_max]