Active Admin中的嵌套表单

时间:2011-11-22 09:54:13

标签: ruby-on-rails ruby-on-rails-3 admin nested-forms activeadmin

我需要帮助! 我有2个模型用于调查:

class Poll < ActiveRecord::Base

has_many :poll_questions, :dependent => :destroy
accepts_nested_attributes_for :poll_questions, :reject_if => lambda { |a| a[:text].blank?    }, :allow_destroy => true

end

问题的模型如下:(似乎这些关联是正确的)

class PollQuestion < ActiveRecord::Base
belongs_to :poll
has_many :poll_answers, :dependent => :destroy
accepts_nested_attributes_for :poll_answers, :reject_if => lambda { |a| a[:text].blank? }, :allow_destroy => true

end

此外,在活动管理员中:

ActiveAdmin.register Poll do
form do |f|
f.inputs "Main poll" do
  f.input :title
  f.input :description
end

f.inputs do
f.has_many :poll_questions do |question|
  question.input :text
end
end

f.buttons
end

end

它有一个美丽的形式,不会创建一个实际的问题对象!为什么? 我已尽力解决问题,但我失败了。

2 个答案:

答案 0 :(得分:0)

这可能是因为你对accepts_nested_attributes_for有一个双重关卡。为什么不为Poll响应创建一个新模型,这个模型有很多民意调查答案?

然后,您将在PollResponse类中设置accepts_nested_attributes_for:poll_answers。

然后,您不仅可以对表单问题进行排序,还可以跟踪谁(可能)回答了轮询,以及创建轮询响应的时间。 PollResponses模型也必须属于民意调查,以区分正在回答的民意调查。

答案 1 :(得分:0)

尝试创建对象

f.has_many :poll_questions, PollQuestion.new do |question|
  question.input :text
end