2012-08-29 226 views
0

我希望能夠創建一個Ransack :: Search對象傳遞給search_form_for,但最初創建的搜索對象查詢數據庫,至於我不想要。創建Ransack對象而不查詢數據庫

我想用Ransack :: Search選項顯示一個初始的空白表單來搜索,而不用調用數據庫。

我該怎麼做?

感謝,

問候

回答

0

阿雷爾關係(即查詢)在第一參考結果懶洋洋地執行的,所以你會發現,你可以創建一個搜索對象並把它傳遞到窗體,沒有它調用數據庫,只要你不在任何地方引用.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放在行尾,否則控制檯會打印最後一個評估過的東西,這會導致查詢被執行!

+0

是的,我解決了我的問題從github存儲庫,但忘了在這裏添加答案,謝謝! :-) – mongeta

相關問題