使用具有空值的'eq'謂詞,Ransack將取消該謂詞。在你的選擇中有一個「全部」選項顯然很方便。使用Ransack'eq'謂詞搜索空值
但是如果我想要在我的<select>
中添加一個選項也爲空值?爲了說明如何使用'eq'謂詞產生SQL查詢SELECT * FROM spree_orders WHERE order_cycle_id = NULL
。
我的測試代碼(含結果)如下。我想是濾除Order
S其中order_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]
第二個選項是想什麼我添加到我的選擇。我試過「空」,「零」,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>
你是問在'Spree :: Order.search(order_cycle_id_eq:nil)'裏面放置什麼而不是'nil',或者你問''option value =「裏面用什麼來代替'???'? 「>'?它們不一定必須是相同的。當然,這樣會很好,但是你總是可以有'
Both:選項值將傳遞給'.search(order_cycle_id_eq:value)'中的值。我已經更新了我的問題來持續使用'nil'作爲例子。 –