Ransack使用复选框返回布尔属性为true和false的记录

rev*_*urg 2 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" %>
Run Code Online (Sandbox Code Playgroud)

当此复选框被选中,搜索结果包括所有记录car_spec_anti_lock_brakestrue.如果未选中它,结果只返回记录所在的car_spec_anti_lock_brakes位置false.如何实现搜索表单,以便在未选中复选框时car_spec_anti_lock_brakes返回所有记录为true或false的记录.因此,当选中该复选框时,将返回具有该属性的所有记录,但在取消选中时,将返回所有记录,而不管该属性是true还是false.

reg*_*onn 6

我通过编辑视图文件解决了.

您的代码生成隐藏的表单,提供错误的参数.

<%= 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>
Run Code Online (Sandbox Code Playgroud)

所以,我删除了隐藏的表单.

<%= 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>
Run Code Online (Sandbox Code Playgroud)

如果未选中该复选框,car_spec_anti_lock_brakes则返回所有记录为true或false的记录.