0
我希望能夠創建一個Ransack :: Search對象傳遞給search_form_for,但最初創建的搜索對象查詢數據庫,至於我不想要。創建Ransack對象而不查詢數據庫
我想用Ransack :: Search選項顯示一個初始的空白表單來搜索,而不用調用數據庫。
我該怎麼做?
感謝,
問候
我希望能夠創建一個Ransack :: Search對象傳遞給search_form_for,但最初創建的搜索對象查詢數據庫,至於我不想要。創建Ransack對象而不查詢數據庫
我想用Ransack :: Search選項顯示一個初始的空白表單來搜索,而不用調用數據庫。
我該怎麼做?
感謝,
問候
阿雷爾關係(即查詢)在第一參考結果懶洋洋地執行的,所以你會發現,你可以創建一個搜索對象並把它傳遞到窗體,沒有它調用數據庫,只要你不在任何地方引用.result方法。
例如
// in your controller
my_query = MyModelClass.where{ id.gt(0) }
@q = my_query.search(params[:q])
// in your view
search_form_for(@q, (...other options...))
所有這些都將觸發要實際執行數據庫查詢:
- @q.results.each do |result|
- for result in @q.results
- @q.results.count
- @q.results.to_a
- @q.results.size
// ....etc
但只要你只使用搜索對象的形式,它不應該得到執行。
當然,如果你從控制檯測試這個,確保你把;nil
放在行尾,否則控制檯會打印最後一個評估過的東西,這會導致查詢被執行!
是的,我解決了我的問題從github存儲庫,但忘了在這裏添加答案,謝謝! :-) – mongeta