加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 从1a页面提交两个表单

发布时间:2020-12-17 01:28:43 所属栏目:百科 来源:网络整理
导读:是否可以在其中包含一个包含2个表单的视图并同时提交两个表单? 我不想使用嵌套表单. 例如: 我有 : Model Survey|_question_id|_answers_id Model Question:|_textModel Answer|_text 没有嵌套表格可以做到吗?例如,我想创建一个新问题(表单1)和一个新答案
是否可以在其中包含一个包含2个表单的视图并同时提交两个表单?

我不想使用嵌套表单.

例如:

我有 :

Model Survey
|_question_id
|_answers_id 

Model Question:
|_text

Model Answer
|_text

没有嵌套表格可以做到吗?例如,我想创建一个新问题(表单1)和一个新答案(表单2),在Controller中的create方法中,我将创建一个新的Survey并手动将question_id和answers_id分配给新创建的问题并相应地回答!

谢谢

解决方法

更好的方法是使用accepts_nested_attributes_for通过一个表单提交来构建所有三个模型.

像这样设置你的模型:

class Survey < ActiveRecord::Base
  has_one :question
  has_many :answers

  accepts_nested_attributes_for :question,:answers
end

class Question < ActiveRecord::Base
  belongs_to :survey
end

class Answer < ActiveRecord::Base
  belongs_to :survey
end

然后你可以使用rails helper编写你的表单,如下所示:

<%= form_for @survey do |form| %>
  <%= form.fields_for :question do |question_form| %>
   <%= question_form.text_field :question
  <% end %>
  <%= form.fields_for :answers do |answer_form| %>
   <%= question_form.text_field :answer
  <% end %>
  <%= form.submit %>
<% end %>

在将呈现表单的控制器操作中,您需要在内存中构建新记录,如下所示:

class SurveyController < ApplicationController
  def new
    @survey = Survey.new
    @survey.build_question
    @survey.answers.build
  end
end

您可以在此处阅读有关accepts_nested_attributes_for的更多信息:http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读