使用带有空白值的“eq”谓词,Ransack 将取消该谓词。在您的选择中有一个“全部”选项显然很方便。
但是,如果我也想在我的 for null 值中添加一个选项<select>
怎么办?换句话说,如何SELECT * FROM spree_orders WHERE order_cycle_id = NULL
使用 'eq' 谓词生成 SQL 查询。
我的测试代码(带结果)如下。我想要的是过滤掉Order
s whereorder_cycle_id == nil
Spree::Order.search(order_cycle_id_eq: nil).result.map(&:order_cycle_id)
Spree::Order Load (2.2ms) SELECT "spree_orders".* FROM "spree_orders"
=> [nil, 1, nil, nil, nil, nil, nil, nil, 1, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, 4, nil, nil, nil, nil]
第二个选项是我想添加到我的选择。我试过'null','nil' nil
,等等。
<select id="q_order_cycle_id_eq" name="q[order_cycle_id_eq]">
<option value="">All</option>
<option value="nil">No Order Cycle</option>
<option value="1">Order Cycle 1</option>
<option value="2">Order Cycle 2</option>
</select>