Это возможно.Я предлагаю вам использовать dsl Active Admin для создания формы, см. https://activeadmin.info/5-forms.html#nested-resources (я перестал использовать .erb partials, даже для сильно настроенных форм).Убедитесь, что вы установили ассоциации между вашими моделями и добавьте accepts_nested_attributes, где это необходимо.
Ваше определение формы может выглядеть следующим образом.
form do |f|
f.semantic_errors *f.object.errors[:base]
inputs 'Question' do
input :name
input :explanation, :as => :text_area
input :variant, :as => :select, :collection => Variant.for_html_select
input :usage
input :published
input :topic, :as => select, :collection => Topic.all # make sure you put the has_many and belongs_to in your Question and Topic model
input :context
end
inputs "Answers" do
has_many :choices, allow_destroy: true do |c|
c.input :name, :label => "Answer"
c.input :correct, :label => "Correct?", :as => :boolean
end
actions
end
Не забудьте
class Question < ApplicationRecord
has_many :choices
accepts_nested_attributes_for :choices, :allow_destroy => true
belongs_to :topic
и
class Choice < ApplicationRecord
belongs_to :question
и
class Topic < ApplicationRecord
has_many :questions
Чтобы ограничить ответы до 4, я бы добавил пользовательскую проверку в модель вопроса: и
class Question < ApplicationRecord
validate :answer_check
def answer_check
errors.add(:base, "Needz 4 answerz") if choices.nil? || choices.length != 4
end
end
и
class Variant < ApplicationRecord
def self.for_html_select
[
["Multiple Choice","fill"],
["Other variant","other"],
]
end
end
Удачи!