Ruby on rails 表单的Rails 4字段在数据库中创建重复行

Ruby on rails 表单的Rails 4字段在数据库中创建重复行,ruby-on-rails,forms,nested,Ruby On Rails,Forms,Nested,我对rails和Stackoverflow都是新手,所以请容忍我。我确信,除了我目前的查询之外,还有一些事情没有正确完成 我有一份申请表,其中包含有问题和提交的矩阵,提交的矩阵有嵌套的答案(对矩阵中的问题) 我有一个表单供用户提交提交,其中显示了特定矩阵的所有相关问题,并允许用户回答这些问题。这将在数据库的submissions/answers表中正确呈现和保存所有内容 然而,当我编辑一个提交时,它会正确地用先前输入的数据预填充字段,因此该部分工作正常,但当我保存它时,它只是将其全部复制 我确信

我对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