ruby-on-rails – Rails 4嵌套表格.
发布时间:2020-12-17 02:47:30 所属栏目:百科 来源:网络整理
导读:我正在为客户构建动态表单.表格有许多形式问题,有许多形式的答案.截至目前,我能够在Active Admin中很好地创建所有内容,并通过应用程序界面上的show动作显示它.这是我遇到的问题.我想显示表单标题(正在工作),以及表单问题(正在运行),以及输入字段以动态提交新
我正在为客户构建动态表单.表格有许多形式问题,有许多形式的答案.截至目前,我能够在Active Admin中很好地创建所有内容,并通过应用程序界面上的show动作显示它.这是我遇到的问题.我想显示表单标题(正在工作),以及表单问题(正在运行),以及输入字段以动态提交新表单答案(这是不起作用的部分).在嵌套表单方面,我觉得我已经筋疲力尽了.我将在下面发布我的代码.
形成 <%= 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 解决方法
首先,你应该在新方法中取消注释这两行.我猜它们是正确的.
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) if @form.save ..... else ..... end end 其次,您的表单代码应如下所示 <%= 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 :title %> </div> <%= ff.fields_for @form_answers do |fa| %> #Here comes the important step <div class="field" %> <%= fa.label :answer %> <%= fa.text_field :answer %> </div> <% end %> <% end %> <div class="form-actions"> <%= f.button :submit %> </div> <% end %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |