【问题标题】:ActionView errors when pushing to Heroku推送到 Heroku 时出现 ActionView 错误
【发布时间】:2013-08-14 20:27:09
【问题描述】:

我正在构建我的第一个 web 应用程序,遵循 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 部署的应用会查找“nil”的 user_id,而我的本地应用会查找“101”之一。这是我的第一个应用程序,所以我什至不确定从哪里开始进行故障排除。我已经尝试通过heroku rake db:push 将我的本地数据库推送到 Heroku 数据库,但我仍然遇到同样的错误。有什么建议吗?在此先感谢您的帮助。

【问题讨论】:

  • 请向我们展示发生这种情况的视图的代码。

标签: ruby-on-rails heroku


【解决方案1】:

确保你

  1. 在 Heroku 上使用 heroku rake db:migrate 迁移数据库
  2. 在您的数据库中有一个有效用户(例如,您可以使用 Heroku 上的 Rails 控制台创建一个)

当您的数据库中没有用户实例时,您的代码似乎正在尝试加载用户实例。如果您的应用程序在您的数据库中有一些用户时可以运行,请修复您的代码以在没有用户的情况下正确执行。

【讨论】:

  • 大家好,感谢您的帮助。问题已解决。组成我主页某些部分的部分首先检查用户是否登录到站点,如果没有找到 cookie,则将 nil 对象传递给身份验证方法。我愚蠢地在我的函数中放置了 ':nil' 而不是 'nil',所以字符串“nil”被传递给 DB 查询。至于为什么这在我的家庭服务器而不是 Heroku 上运行,这仍然是一个谜。我猜我的家庭服务器仍然有一个永久 cookie,导致应用程序认为用户仍在登录。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-01-26
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2019-06-01
    • 1970-01-01
    相关资源
    最近更新 更多