2014-04-22 85 views
0

這是我上一個問題的擴展(using a select, assign variable and retrieve records)。Rails中的查詢不返回任何記錄

我解決了傳遞正確值到控制器的問題,但是我的查詢仍然沒有返回任何記錄,但是在我的數據庫中有匹配的記錄。對於應用

新的編輯器...

# GET /bentries/january 
def monthlysumm 
    @bentries = Bentry.by_month(params[:billDate])  
end 

這裏是除了模型...

def self.by_month(mon) 
    where("strftime('%m', billDate) + 0 = ?", mon) 
end 

這會產生這樣的SQL語句...

SELECT "bentries".* FROM "bentries" WHERE (strftime('%m", billDate) + 0 = '2') 

如果我進入Firefox中的SQLite管理器並鍵入(相當於)SQL語句......

SELECT * FROM bentries WHERE (strftime('%m', billDate) + 0 = 2) 

它從「bentries」表中返回預期的3條記錄,但是應用程序中的代碼卻生成了沒有得到的記錄集。

任何人都可以看到我在控制器或模型中出錯的地方嗎?

回答

0

您的疑問不一致。

生成的是尋找一個字符串,你輸入的是尋找一個整數。

參數作爲字符串進入控制器,因此如果需要,您需要將其設置爲整數。例如:

def self.by_month(mon) 
    where("strftime('%m', billDate) + 0 = ?", mon.to_i) 
end 

或者你也可以做到這一點在調用by_month,這取決於您是否想在你的by_month方法月份是一個整數或字符串。

+0

好吧,我覺得它是這樣的。現在我已經按照你的建議和_viola_添加了'.to-i',現在我得到了我期望的結果!謝謝,格雷姆! – MDSoren

+0

不用擔心。樂於幫助。 –