Ruby on rails 表单的Rails 4字段在数据库中创建重复行
我对rails和Stackoverflow都是新手,所以请容忍我。我确信,除了我目前的查询之外,还有一些事情没有正确完成 我有一份申请表,其中包含有问题和提交的矩阵,提交的矩阵有嵌套的答案(对矩阵中的问题) 我有一个表单供用户提交提交,其中显示了特定矩阵的所有相关问题,并允许用户回答这些问题。这将在数据库的submissions/answers表中正确呈现和保存所有内容 然而,当我编辑一个提交时,它会正确地用先前输入的数据预填充字段,因此该部分工作正常,但当我保存它时,它只是将其全部复制 我确信我在我的关系声明中犯了一些错误,因为提交人应该只允许对每个问题有一个答案,但我已经兜了几个小时的圈子,很可能找错了地方 您可以在此处看到效果: 我的模型:Ruby on rails 表单的Rails 4字段在数据库中创建重复行,ruby-on-rails,forms,nested,Ruby On Rails,Forms,Nested,我对rails和Stackoverflow都是新手,所以请容忍我。我确信,除了我目前的查询之外,还有一些事情没有正确完成 我有一份申请表,其中包含有问题和提交的矩阵,提交的矩阵有嵌套的答案(对矩阵中的问题) 我有一个表单供用户提交提交,其中显示了特定矩阵的所有相关问题,并允许用户回答这些问题。这将在数据库的submissions/answers表中正确呈现和保存所有内容 然而,当我编辑一个提交时,它会正确地用先前输入的数据预填充字段,因此该部分工作正常,但当我保存它时,它只是将其全部复制 我确信
class Submission < ActiveRecord::Base
belongs_to :matrix
belongs_to :user
has_many :answers, :dependent => :destroy
accepts_nested_attributes_for :answers,
:allow_destroy => true
end
我的表格:
= form_for([@matrix,@submission]) do |f|
- if @submission.errors.any?
#error_explanation
%h2
= pluralize(@submission.errors.count, "error")
prohibited this submission from being saved:
%ul
- @submission.errors.full_messages.each do |message|
%li= message
%br/
.field
= f.hidden_field :matrix_id, :value => params[:matrix_id]
.field
= f.hidden_field :user_id, :value => current_user.id
= f.fields_for :answers, @answers do |answer|
.field
=answer.label answer.object.question_answered
= answer.text_field :choice
.field
= answer.hidden_field :question_answered
.field
= answer.hidden_field :question_id
.actions
= f.submit
在发布这篇文章的几秒钟内,我就找到了答案。我认为写问题的过程很有帮助 对于其他偶然发现这一点的人,我错过了在嵌套属性允许参数中包含:id。我没有意识到这是必要的 所以我需要替换:
def submission_params
params.require(:submission).permit(:matrix_id, :user_id, :name, :answers_attributes => [:question_answered, :choice, :question_id])
end
与:
谢谢大家,
TB在发布此消息的几秒钟内,我就找到了答案。我认为写问题的过程很有帮助 对于其他偶然发现这一点的人,我错过了在嵌套属性允许参数中包含:id。我没有意识到这是必要的 所以我需要替换:
def submission_params
params.require(:submission).permit(:matrix_id, :user_id, :name, :answers_attributes => [:question_answered, :choice, :question_id])
end
与:
谢谢大家,
结核病
def submission_params
params.require(:submission).permit(:matrix_id, :user_id, :name, :answers_attributes => [:question_answered, :choice, :question_id])
end
def submission_params
params.require(:submission).permit(:matrix_id, :user_id, :name, :answers_attributes => [:id, :question_answered, :choice, :question_id])
end