belongs_to id未设置为activeadmin

时间:2014-11-06 23:11:20

标签: ruby-on-rails activerecord activeadmin

我有两个模型:AsssessmentQuestion,其组织方式如下:

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_idnil,就像通过问题标签一样。

belongs_to has_many关系创建activeadmin界面的正确方法是什么?

如果您需要更多信息,请与我们联系。

1 个答案:

答案 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]