2010-06-12 52 views
3

我建立了我的應用程序恰好符合Railscasts Time Zone Episode 1一種形式,但是當我運行NoMethodError爲time_zone_select在

<%= f.time_zone_select :time_zone, ActiveSupport::TimeZone.us_zones %> 

我得到這個錯誤在用戶#新

NoMethodError

顯示應用程序/ views/users/new.html.erb 哪裏行#27上升:

您有沒有對象,當你沒有 期待它!您可能預期了Array的一個 實例。在評估nil時發生錯誤 。 < =>

27行是上述行。我真的被困在這...

+0

你能檢查一下'ActiveSupport :: TimeZone.us_zones'在控制檯中給出了什麼? – Eimantas 2010-06-12 06:27:17

+0

[# JackCA 2010-06-12 06:37:31

回答

0

我有完全一樣的問題。它似乎與Rails 2.3.8相關,因爲如果我恢復到以前的版本(2.3.4,通過在/config/environment.rb中設置),一切正常。看起來像一個錯誤。我正在檢查這個錯誤報告和生成的補丁是否可以解決這個問題:https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/4942-activesupporttimezone-incorrectly-stores-bogus-values-in-zones_map#ticket-4942

+0

我確實認爲這也是一個錯誤。我甚至不記得我做了什麼來解決這個問題,但我最終做到了。我正在使用本地種子數據庫,因此我最終放棄了創建和遷移它。我不確定這是否是這樣,但如果你有能力做到這一點,值得一試。 – JackCA 2010-07-01 20:24:57

0

你有一個名爲time_zone的模型的數據庫字段?它是否被命名爲時區?

你會需要的東西,如遷移:

add_column :users, :time_zone, :string 

然後

rake db:migrate 
+0

是的,他們已經在那裏,並填充種子數據。 – JackCA 2010-06-12 06:38:47

+0

還可以嗎?我已經試過了一切 – JackCA 2010-06-13 15:13:24

+0

由於數據庫/遷移和視圖之間的拼寫錯誤,我在這裏遇到了問題,因此檢查拼寫錯誤,如果這不明顯。 您可以包含堆棧跟蹤嗎? – 2010-06-16 15:37:45

0

是的,這是2.3.8中的一個錯誤,它在上述票證中已經修復。

這可能是由於數據庫字段中存儲的時區不對應於Rails或TZInfo知道的任何時區。在我們的例子中,它被意外的HTML編碼&符號絆倒,因此Pacific Time (US & Canada)變成了Pacific Time (US &amp; Canada)http://github.com/rails/rails/commit/78e4d88c7071c633ee1eb68f49b90719aa198eaa應該解決它,但您可能想回去並確保您的數據庫中沒有任何不良數據。

0

我有同樣的問題,這導致我的一個黃瓜測試失敗。我升級到Rails 2.3.9(從2.3.8)並通過了所有測試。祝你好運!