Ruby on rails 计算实例rails中假/真值的数目
这里是rails的新成员。我有一个只包含布尔字段的模型清单。 我很难使用特定的检查表返回真值或假值的总和 例如:Ruby on rails 计算实例rails中假/真值的数目,ruby-on-rails,count,boolean,Ruby On Rails,Count,Boolean,这里是rails的新成员。我有一个只包含布尔字段的模型清单。 我很难使用特定的检查表返回真值或假值的总和 例如: <Checklist id: 1, field1: false, field2: false, field3: false, field4: true > 我怎么知道有3个假值和1个真值 我还不知道怎么做。欢迎提供任何解决方案/资源。谢谢您可以使用枚举器方法select检查给定的参数,并计算为真或假的响应数,然后知道相反的结果。例如,假设这来自一个表单: #checkl
<Checklist id: 1, field1: false, field2: false, field3: false, field4: true >
我怎么知道有3个假值和1个真值
我还不知道怎么做。欢迎提供任何解决方案/资源。谢谢您可以使用枚举器方法select检查给定的参数,并计算为真或假的响应数,然后知道相反的结果。例如,假设这来自一个表单:
#checklist_controller.rb
def your_controller_method
true_checked = checklist_params.values.select{ |v| v }.count
false_checked = checklist_params.keys.count - true_checked
end
private
def checklist_params
params.permit(:field1, :field2, :field3...)
end
我所做的解释:
checklist_params是从用户再次填写checklist的表单中传递的内容创建的,我假设它存在,并且范围仅为布尔字段,忽略id和timestamp等字段
调用参数上的值,该值将给出响应的所有实际布尔值。这将给我们一个数组。
从结果数组中选择任何为true的项。select旁边的块将数组中当前迭代的项命名为变量v,如果v不为false,则返回。
调用count on what selected so将为我们提供所有为true的计数,并将此数字存储为true\u checked
通过从检查表参数中设置的字段总数中减去真实响应的总数来计算检查的假值。
也许不是更好的方法,但我这样做是为了在最后一个检查表中显示错误值的数量:checklist.last.attributes.values.countfalse