2011-01-06 36 views
1

我正在構建我的第一個webapp,跟隨Michael Hartl Rails Tutorial。在完成Chapter 10之後,我發現我的應用程序在本地工作,但在將其推送到Heroku時不起作用。開發日誌輸出寫着:推向Heroku時的ActionView錯誤

Started GET "/" for 98.154.183.51 at Thu Jan 06 01:07:15 -0800 2011 
    Processing by PagesController#home as HTML 
Rendered layouts/_header.html.erb (28.3ms) 
Rendered pages/home.html.erb within layouts/application (30.9ms) 
Completed in 35ms 
User Load (29.6ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 101) LIMIT 1 
    CACHE (0.0ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 101) LIMIT 1 
Rendered layouts/_header.html.erb (149.3ms) 
    CACHE (0.0ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 101) LIMIT 1 
Rendered layouts/_sidebar.html.erb (8.1ms) 
Rendered layouts/_footer.html.erb (0.6ms) 
Rendered sessions/new.html.erb within layouts/application (342.4ms) 
Completed 200 OK in 421ms (Views: 390.1ms | ActiveRecord: 29.9ms) 

而Heroku的生產日誌上寫着:

Started GET "/" for 98.154.183.51 at Thu Jan 06 01:07:15 -0800 2011 
    Processing by PagesController#home as HTML 
Rendered layouts/_header.html.erb (28.3ms) 
Rendered pages/home.html.erb within layouts/application (30.9ms) 
Completed in 35ms 

ActionView::Template::Error (PGError: ERROR: invalid input syntax for integer: "nil" 
: SELECT "users".* FROM "users" WHERE ("users"."id" = 'nil') LIMIT 1): 

我不知道爲什麼Heroku的部署應用程序查找的「無」爲user_id,而我的地方應用程序尋找「101」之一。這是我的第一個應用程序,所以我不知道哪裏可以開始排除故障。我已經嘗試通過heroku rake db:push將我的本地數據庫推送到Heroku one,但我仍然得到相同的錯誤。有什麼建議?在此先感謝您的幫助。

+0

請讓我們看看發生這種情況的代碼。 – 2011-01-06 10:29:35

回答

1

確保您

  1. 遷移您在Heroku數據庫heroku rake db:migrate
  2. 具有有效的用戶在你的數據庫(你可以如創建一個與Heroku的Rails的控制檯)

它似乎你的代碼試圖加載一個用戶實例,當你沒有在你的數據庫中。如果您的應用在您的數據庫中有一些用戶後正常工作,請修復您的代碼以在沒有用戶存在的情況下采取適當的行動

+0

+1請參閱教程第10.3.2節「示例用戶」 – zetetic 2011-01-06 19:43:22

0

如果您設置了一些初始值,您可能還想運行rake db:seed。