我在這裏有一個奇怪的,它只發生在開發模式下。這條線(控制器):Rails實例變量吐出SQL代碼而不是長度
@searches.length
產生以下錯誤:
NoMethodError: undefined method
fields' for nil:NilClass: SELECT searches.*, COUNT(searchTerm) AS timesSearched FROM
searches` WHERE (results = 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)
謝謝。生產和開發數據庫是同一個。生產和開發文件是完全不同的,他們需要是對的?雖然我看不到任何可能導致dev文件問題的選項。任何其他想法? – kakubei 2012-01-10 12:07:37
默認配置通常有幾行不同。如何不同取決於項目的複雜性。 另外我注意到你有config.whiny_nils設置爲true。默認情況下,生產將此設置爲false,開發將其設置爲true。基本上這會在方法作用於零對象時導致錯誤。 你可以試試@ searches.length,除非@ searches.nil? – detheridge02 2012-01-10 12:22:28
我曾嘗試設置whiny_nils關閉和相同的錯誤,這是有道理的,因爲它抱怨未定義的方法。除非@ searches.nil?我得到相同的錯誤:( – kakubei 2012-01-10 12:36:45