Ruby on rails 提交复选框表单时仅更新某些属性

Ruby on rails 提交复选框表单时仅更新某些属性,ruby-on-rails,ruby,forms,checkbox,updating,Ruby On Rails,Ruby,Forms,Checkbox,Updating,我正在尝试更新一个表单,该表单仅在未选中时将属性集更新为false。它们当前默认为true(这是我想要的),但如果我单击一个属性,它会将所有属性更新为false。我只想将其中一行和其他许多行一起更新为false。我不知道如何进行检查,以说明“如果选择了一个选定的属性,则更新该属性;如果选择了另一个属性,则更新另一个属性,并立即更新所有收集/检查的字段。” 我已在路线中定义了一个集合: resources :evidences do put :score, on: :collectio

我正在尝试更新一个表单,该表单仅在未选中时将属性集更新为false。它们当前默认为true(这是我想要的),但如果我单击一个属性,它会将所有属性更新为false。我只想将其中一行和其他许多行一起更新为false。我不知道如何进行检查,以说明“如果选择了一个选定的属性,则更新该属性;如果选择了另一个属性,则更新另一个属性,并立即更新所有收集/检查的字段。”

我已在路线中定义了一个集合:

resources :evidences do
      put :score, on: :collection
  end
这是我的控制器:

class EvidencesController < ApplicationController

  def score
    EvidenceScore.update_all({quality: false, alignment: false}, {id: params[:evidence_score_ids]} )
    redirect_to observation_domain_indicator_evidences_path
  end

end
类证据控制器
这是我的表格:

<%= form_tag(score_observation_domain_indicator_evidences_path, :method => 'put') do %>>
        <tr>
          <th><h4> Evidence </h4></th>
          <th><h4> Quality </h4></th>
          <th><h4> Alignment</h4></th>
          <th><h4> Quality(Your Score) </h4></th>
          <th><h4> Alignment(Your Score) </h4></th>
        </tr>
      <% @indicator.evidence_scores.each do |evidence_score| %>
          <tr>
            <td><%= evidence_score.description %></td>
            <td><%= check_box_tag("evidence_score_ids[]", evidence_score.id) %></td>
            <td><%= check_box_tag("evidence_score_ids[]", evidence_score.id) %></td>
            <td><%= evidence_score.quality ? "Yes" : "No" %></td>
            <td><%= evidence_score.alignment ? "Yes" : "No" %></td>
          </tr>
        <% end %>
      </table>
    <%= submit_tag "Submit Scores" %>
<% end %>
“put”)do%>>
证据
品质
对齐
质量(你的分数)
对齐(你的分数)
当你点击下面的图片链接时,在第二行,如果我只选中其中一个复选框,它们都会更新。我试图有一个能力,只有一个更新,如果我选择一个复选框。通过单击复选框并提交它,它将显示“否”

这是一张正在发生的事情的照片


我发现这里有几个错误

您的视图没有区分两种情况,您需要增强您的功能,以使每个复选框具有不同的名称
乙二醇

然后在控制器中,您应该以不同的方式处理参数

if params[:quality] == true
  update_quality_attribute
end
if params[:alingment] == true
  update_alignment_attribute
end
附:我不太明白你用
update\u all
做什么。如果尝试更新所有记录,则应忽略最后一个哈希。如果只想更新一条记录,则应

  • 使用
    update\u属性
    update\u列
  • 将您的路线更改为
    on::member
    路线

谢谢,作为参考,我想一次更新它们。这就是为什么我用收集。我从这段视频中拿出了一页。我目前得到一个“缺少模板证据/分数”,这很奇怪。xlembouras,我在这一行中传递控制器的具体内容是什么`
证据核心。更新所有({quality:false,alignment:false},{id:params[:evidence\u score\u ids]})
更新质量属性
更新对齐属性
if params[:quality] == true
  update_quality_attribute
end
if params[:alingment] == true
  update_alignment_attribute
end