我在这里有一个奇怪的,它只发生在开发模式下。这一行(在控制器中):
@searches.length
产生此错误:
NoMethodError:未定义的方法
fields' for nil:NilClass: SELECT searches.*, COUNT(searchTerm) AS timesSearched FROM
搜索`WHERE(结果= 0 AND searchDate> DATE_SUB(CURDATE(),INTERVAL 7 DAY))GROUP BY searchTerm ORDER BY timesSearched DESC,searchDate DESC
该SQL是被调用然后分配给此实例变量的查询。这在生产模式中不会发生,并且不会发生。
我认为它必须与我的开发环境有关,但却无法想到它可能是什么。
非常感谢任何帮助。
Ruby 1.8.7和Rails 3.1.1
编辑发布开发环境文件内容
config.cache_classes = false
config.whiny_nils = true
config.encoding = "utf-8"
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = false
config.active_support.deprecation = :log
config.action_dispatch.best_standards_support = :builtin
config.assets.compress = false
config.assets.debug = false
config.assets.precompile += %w( *.css )
答案 0 :(得分:0)
您在开发中配置的数据库是否可能没有搜索所需的表/字段(因此尝试将.length设置为NULL)。它可以是像允许空标志更改的字段一样小的东西。
还要在开发数据库上更改任何权限(更改密码,允许的主机等)?
否则创建生产数据库的转储,使用它来创建临时数据库并将开发配置指向该数据库,看看是否收到相同的错误。
还要比较您的生产和开发配置文件。
如果您在此处有更多信息发布,我们会看看是否可以提供帮助:)
戴夫
答案 1 :(得分:0)
我能够通过安装RVM并升级到Ruby 1.9.3来修复错误。 OS X附带的1.8.7版本中必定存在导致这些问题的内容,因为我开始将其用于其他查询。
早些时候我使用1.9.2但不得不降级,因为我的托管网站仍然使用1.8.7。
我感谢你的帮助,他们是非常好的主意,非常感谢。