Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 计算实例rails中假/真值的数目_Ruby On Rails_Count_Boolean - Fatal编程技术网

Ruby on 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

这里是rails的新成员。我有一个只包含布尔字段的模型清单。 我很难使用特定的检查表返回真值或假值的总和

例如:

<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