2013-05-15 60 views
0

我想有條件的日期加到我的控制器索引操作:日期函數錯誤3

@events = Event.where("date" => Date.today.to_s).order("date").page(params[:page]).per_page(5) 

我試圖讓我的觀點僅顯示有一個日期值大於或等於事件今天的日期。例如,如果某個事件的日期值爲2013-05-13,則不應顯示該事件,因爲該事件已經發生,並且只應顯示日期值爲今天或更晚日期的事件。

問題是,索引視圖沒有返回任何事件,我創建了日期值爲2013-05-30,這意味着它應該工作。有任何想法嗎?

在此先感謝

回答

0

這實際上會返回日期等於今天的所有內容:

Event.where("date" => Date.today.to_s) 

你可能要代替的是:

Event.where("date >= ?", Date.today) 

的ActiveRecord將插值日到?。另外,你不需要撥打to_s就可以了,ActiveRecord會爲你的日期。

+0

這工作,另一個偉大的學習經驗!非常感謝你Adam –

+0

從長遠來看@ coletrain的建議也是一個好主意,以及如果你打算在多個地方使用這個查詢。 –

0

試試這個:

在模型中使用的範圍,像這樣:

scope :recent_event, lambda { where('date >= ?', Date.today) } 

然後在你的控制器寫入

@events = Event.recent_event.order("date").page(params[:page]).per_page(5) 
+1

您想要使用lambda,否則您的最近事件將取決於Web服務器何時重新啓動而不是當前日期。 –