Ruby on rails 提交复选框表单时仅更新某些属性
我正在尝试更新一个表单,该表单仅在未选中时将属性集更新为false。它们当前默认为true(这是我想要的),但如果我单击一个属性,它会将所有属性更新为false。我只想将其中一行和其他许多行一起更新为false。我不知道如何进行检查,以说明“如果选择了一个选定的属性,则更新该属性;如果选择了另一个属性,则更新另一个属性,并立即更新所有收集/检查的字段。” 我已在路线中定义了一个集合: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
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
证据核心。更新所有({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