Ruby on rails Rails中的查询不返回任何记录
这是我上一个问题()的延伸 我通过将正确的值传递给控制器解决了这个问题,但是我的查询仍然没有返回任何记录,但是我的数据库中有匹配的记录 新编辑的应用程序控制器Ruby on rails Rails中的查询不返回任何记录,ruby-on-rails,sqlite,Ruby On Rails,Sqlite,这是我上一个问题()的延伸 我通过将正确的值传递给控制器解决了这个问题,但是我的查询仍然没有返回任何记录,但是我的数据库中有匹配的记录 新编辑的应用程序控制器 # GET /bentries/january def monthlysumm @bentries = Bentry.by_month(params[:billDate]) end 这是对模型的补充 def self.by_month(mon) where("strftime('%m', billDate) + 0
# 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条记录,但应用程序中的代码不会生成结果记录集
有人能看到我在控制器或模型中哪里出了问题吗 您的查询不一样 生成的是查找字符串,输入的是查找整数 参数作为字符串进入控制器,因此如果需要,需要将其设置为整数。例如:
def self.by_month(mon)
where("strftime('%m', billDate) + 0 = ?", mon.to_i)
end
或者您可以在调用
by\u month
时执行此操作,这取决于您希望by\u month
方法中的月份是整数还是字符串。好的,我想是这样的。现在我已经按照你的建议添加了.to-I
,viola现在得到了我期望的结果!谢谢你,格雷姆!别担心。很乐意帮忙。