我正在为客户构建一个动态表单。一个表单有很多问题,每个问题有很多答案选项。目前,我能够在Active Admin中很好地创建所有内容,并通过应用程序界面上的显示操作进行显示。这里是我的问题:我想显示表单标题(已经可以实现),以及表单问题(也可以实现),以及输入字段以便即时提交新的表单答案(这是没有实现的部分)。对于嵌套表单,我感觉已经尝试了所有可能性。我将在下面发布我的代码。
表单
这里是模型。
我的表单控制器
表单
<%= form_for @form do |f| %>
<div class="field">
<h1><%= @form.name %></h1>
</div>
<%= f.fields_for :form_questions do |ff| %>
<div class="field">
<%= ff.label :title %>
<%= ff.text_field :form_answers %>
</div>
<% end %>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
这里是模型。
class Form < ActiveRecord::Base
has_many :form_questions, dependent: :destroy
accepts_nested_attributes_for :form_questions, allow_destroy: true
end
class FormQuestion < ActiveRecord::Base
belongs_to :form
has_many :field_types
has_many :form_answers, dependent: :destroy
accepts_nested_attributes_for :field_types
accepts_nested_attributes_for :form_answers
end
class FormAnswer < ActiveRecord::Base
belongs_to :form_question
end
我的表单控制器
class FormsController < ApplicationController
def new
@form = Form.new
# form_questions = @form.form_questions.build
# form_answers = form_questions.form_answers.build
end
def create
@form = Form.new(form_params)
end
def index
@forms = Form.includes(:form_questions).all
end
def show
@form = Form.find(params[:id])
end
def edit
@form = Form.find(params[:id])
end
def form_params
params.require(:form).permit(:id, :name, form_questions_attributes: [:title, form_answers_attributes: [:answer]])
end
end
new
动作中注释掉了那两行代码?我猜它们是正确的。 - Pavan<%= ff.text_field :form_answers %>
感到困惑。form_answers
是你的form_questions
中的一个属性吗? - Pavan