推送到Heroku时出现ActionView错误

时间:2011-01-06 09:33:16

标签: ruby-on-rails heroku

我正在构建我的第一个webapp,跟随Michael Hartl Rails Tutorial。完成Chapter 10后,我发现我的应用程序在本地工作,但是当我将它推送到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
 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为“nil”,而我的本地应用程序会查找“101”之一。这是我的第一个应用程序,所以我不确定从哪里开始进行故障排除。我已经尝试通过heroku rake db:push将我的本地数据库推送到Heroku,但我仍然得到相同的错误。有什么建议?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

确保你

  1. 使用heroku rake db:migrate
  2. 在Heroku上迁移您的数据库
  3. 在您的数据库中拥有一个有效用户(例如,您可以在Heroku上使用Rails控制台创建一个用户)
  4. 当您的数据库中没有用户实例时,您的代码似乎正在尝试加载。如果您的应用程序在您的数据库中有一些用户后工作,请修复您的代码,以便在没有用户存在时采取适当的行动。

答案 1 :(得分:0)

如果你已经设置了一些初始值,你可能还想运行rake db:seed。