我想在給定的日期範圍內搜索數據。我有一個數據庫,具有名稱,場地,start_at和end_at的詳細信息。我可以通過在控制器中定義查找方法來搜索名稱和場所。以下是我的控制器代碼。如何在Ruby on Rails中查找日期範圍?
def find
@events=Event.find(:all, :conditions=>["venue = ? OR name = ?", params[:search_string], params[:search_string]])
end
然後它會找到地點或名稱。但是,當我將start_at添加到此代碼中時,它將返回一個異常。我怎樣才能從數據庫中搜索相關的日期範圍?任何人都可以幫我嗎?我使用postgresql和紅寶石1.8.7和rails 2.3.8版本。
我改變了我的查找方法如下...
def find
if (params[:search_string])
@events=Event.find(:all, :conditions=>["venue = ? OR name = ?", params[:search_string], params[:search_string]])
else
@events= Event.all(:conditions => ["start_at >= ? AND end_at <= ?", params[:start_at], params[:end_at]])
end
end
第一個if語句工作正常。但其他部分不起作用。沒有例外。它不會從數據庫中檢索與日期相關的數據。由於沒有檢索數據,我將這個if語句添加到我的代碼中。有誰能幫我糾正第二部分嗎?我在搜索文本框中輸入日期。但它不會檢索任何數據。
什麼例外?以及你如何將'start_at添加到此代碼中? – fl00r
start_at是日期變量我添加這個爲def查找 @ events = Event.find(:all,:conditions => [「venue =?OR name =?OR start_at =?」,params [:search_string],params [ :search_string] ,, params [:search_string]]) end – Rosh
start_at在你的例子中是一個STRING不是日期。 – fl00r