这是我上一个问题(using a select, assign variable and retrieve records)的扩展。
我通过将正确的值传递给控制器解决了问题,但我的查询仍然没有返回任何记录,但我的数据库中有匹配的记录。
应用程序的新编辑控制器......
# 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 Manager并键入(等效的)SQL语句...
SELECT * FROM bentries WHERE (strftime('%m', billDate) + 0 = 2)
它从" bentries"返回预期的3条记录。表,但是应用程序中的代码生成NO结果记录集。
任何人都可以看到我在控制器或模型中出错了吗?!?
答案 0 :(得分:0)
您的查询不一样。
生成的字符串正在查找字符串,您输入的字符串正在查找整数。
参数作为字符串进入控制器,因此如果需要,您需要使其成为整数。例如:
def self.by_month(mon)
where("strftime('%m', billDate) + 0 = ?", mon.to_i)
end
或者您可以在调用by_month
时执行此操作,具体取决于您是希望by_month
方法中的月份为整数还是字符串。