Ruby on rails 使用复选框搜索布尔属性为true和false的返回记录

Ruby on rails 使用复选框搜索布尔属性为true和false的返回记录,ruby-on-rails,ransack,Ruby On Rails,Ransack,我正在使用Ransack在名为Car的模型上创建搜索表单。我在Car上有几个布尔属性,我在搜索表单中为每个属性都包含了复选框,例如: <%= f.check_box :car_spec_anti_lock_brakes_true %> <%= f.label :car_spec_anti_lock_brakes_true, "ABS" %> 选中此复选框后,搜索结果将包括car\u spec\u anti\u lock\u brakes为true的所有记录。未选中时

我正在使用Ransack在名为
Car
的模型上创建搜索表单。我在
Car
上有几个布尔属性,我在搜索表单中为每个属性都包含了复选框,例如:

<%= f.check_box :car_spec_anti_lock_brakes_true %>
<%= f.label :car_spec_anti_lock_brakes_true, "ABS" %>


选中此复选框后,搜索结果将包括
car\u spec\u anti\u lock\u brakes
true
的所有记录。未选中时,结果仅返回
car\u spec\u anti\u lock\u brakes
false
的记录。如何实现搜索表单,以便在复选框未选中时,返回
汽车规格防锁制动器
为真或假的所有记录。因此,当复选框被选中时,返回所有具有该属性的记录,但当复选框被取消选中时,返回所有记录,与属性是真是假无关。

我通过编辑传递给
Car.search
方法的
参数
散列来解决这个问题。如果复选框未选中,我将从哈希中删除参数。因此,如果我有以下复选框:

<%= f.check_box :car_spec_anti_lock_brakes_true %>
<%= f.label :car_spec_anti_lock_brakes_true, "ABS" %>

<%= f.check_box :car_spec_traction_control_true %>
<%= f.label :car_spec_traction_control_true, "Traction control" %>

<%= f.check_box :car_spec_rims_true %>
<%= f.label :car_spec_rims_true, "Rims" %>

我通过编辑视图文件解决了这个问题

您的代码生成了提供假参数的隐藏表单

<%= f.check_box :car_spec_anti_lock_brakes_true %>

#generated html code
<input type="hidden" value="0" name="q[car_spec_anti_lock_brakes_true]"></input>
<input id="q_car_spec_anti_lock_brakes_true" type="checkbox" value="1" name="q[car_spec_anti_lock_brakes_true]"></input>

#生成的html代码
所以,我删除了隐藏的形式

<%= f.check_box :car_spec_anti_lock_brakes_true, include_hidden: false %>

#generated html code
<input id="q_car_spec_anti_lock_brakes_true" name="q[car_spec_anti_lock_brakes_true]" value="1" type="checkbox"></input>

#生成的html代码
当复选框未选中时,将返回
汽车规格防锁制动器
为真或假的所有记录

<%= f.check_box :car_spec_anti_lock_brakes_true, include_hidden: false %>

#generated html code
<input id="q_car_spec_anti_lock_brakes_true" name="q[car_spec_anti_lock_brakes_true]" value="1" type="checkbox"></input>