Rails Heroku 上的应用状态 500 内部服务器错误(很抱歉,出了点问题)
Rails app on Heroku status 500 internal server error (We're sorry but something went wrong)
你好,我有一个在本地运行良好的应用程序,但是当我将它推送到 Heroku 时,我遇到了问题。
HEROKU LINK: https://sleepy-garden-73993.herokuapp.com
GITHUB 回购:https://github.com/kbachand/ginger_ails
检查页面时控制台出错:
无法加载资源:服务器响应状态为 500(内部服务器错误)
如何复制问题:
-点击"check your address",输入地址:202 tryon st;邮政编码:28207(在我们的服务区内)
-单击 "select your ailment" 和 select 一个(任何一个都可以)
-点击"purchase remedy kit",会提示您登录或注册。如果你愿意,你可以注册,但我的登录名是 keithbtest@gmail.com 和密码:surfsup714
- 登录后单击 "purchase remedy kit",它应该呈现一个视图,向您显示购物车中的所有项目,并允许您清空或通过条纹购买。但是你得到了错误。
HEROKU 日志:
2016-11-02T18:15:02.693028+00:00 app[web.1]: [1m[36mCart Load (1.4ms)[0m [1mSELECT "carts".* FROM "carts" WHERE "carts"."id" = LIMIT 1[0m [["id", 1]]
2016-11-02T18:15:02.696486+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::DatatypeMismatch: ERROR: argument of WHERE must be type boolean, not type integer
2016-11-02T18:15:02.695276+00:00 app[web.1]: [1m[35mUser Load (1.8ms)[0m SELECT "users".* FROM "users" WHERE (1) LIMIT 1
2016-11-02T18:15:02.695572+00:00 app[web.1]: Completed 500 Internal Server Error in 7ms (ActiveRecord: 4.6ms)
2016-11-02T18:15:02.696484+00:00 app[web.1]:
2016-11-02T18:15:02.696487+00:00 app[web.1]: ^
2016-11-02T18:15:02.696486+00:00 app[web.1]: LINE 1: SELECT "users".* FROM "users" WHERE (1) LIMIT 1
2016-11-02T18:15:02.696488+00:00 app[web.1]: : SELECT "users".* FROM "users" WHERE (1) LIMIT 1):
2016-11-02T18:15:02.696488+00:00 app[web.1]: app/controllers/carts_controller.rb:35:in `show'
2016-11-02T18:15:02.696489+00:00 app[web.1]:
2016-11-02T18:15:02.696489+00:00 app[web.1]:
2016-11-02T18:18:42.858131+00:00 heroku[router]: at=info method=GET path="/" host=sleepy-garden-73993.herokuapp.com request_id=5c66a6cc-7de8-43b6-92c3-51b63a3d3ab7 fwd="104.139.26.81" dyno=web.1 connect=1ms service=18ms status=200 bytes=6966
日志中的重要位是:
"ActiveRecord::StatementInvalid (PG::DatatypeMismatch: ERROR: argument of WHERE must be type boolean, not type integer "
下面写着错误发生在 app/controllers/carts_controller.rb:35
https://github.com/kbachand/ginger_ails/blob/master/app/controllers/carts_controller.rb#L35
在那条线上你有:
@user = User.find_by(id: params[:id])
所以看起来 params[:id]
是一个整数,但是 id
列是一个布尔值。
当查看您的 schema.rb 以检查您的列类型时,我意识到您安装了 devise
gem,因此您应该使用设计的助手来验证用户而不是做手动:
https://github.com/plataformatec/devise#controller-filters-and-helpers
如果有帮助请告诉我!
你好,我有一个在本地运行良好的应用程序,但是当我将它推送到 Heroku 时,我遇到了问题。
HEROKU LINK: https://sleepy-garden-73993.herokuapp.com
GITHUB 回购:https://github.com/kbachand/ginger_ails
检查页面时控制台出错: 无法加载资源:服务器响应状态为 500(内部服务器错误)
如何复制问题:
-点击"check your address",输入地址:202 tryon st;邮政编码:28207(在我们的服务区内)
-单击 "select your ailment" 和 select 一个(任何一个都可以)
-点击"purchase remedy kit",会提示您登录或注册。如果你愿意,你可以注册,但我的登录名是 keithbtest@gmail.com 和密码:surfsup714
- 登录后单击 "purchase remedy kit",它应该呈现一个视图,向您显示购物车中的所有项目,并允许您清空或通过条纹购买。但是你得到了错误。
HEROKU 日志:
2016-11-02T18:15:02.693028+00:00 app[web.1]: [1m[36mCart Load (1.4ms)[0m [1mSELECT "carts".* FROM "carts" WHERE "carts"."id" = LIMIT 1[0m [["id", 1]]
2016-11-02T18:15:02.696486+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::DatatypeMismatch: ERROR: argument of WHERE must be type boolean, not type integer
2016-11-02T18:15:02.695276+00:00 app[web.1]: [1m[35mUser Load (1.8ms)[0m SELECT "users".* FROM "users" WHERE (1) LIMIT 1
2016-11-02T18:15:02.695572+00:00 app[web.1]: Completed 500 Internal Server Error in 7ms (ActiveRecord: 4.6ms)
2016-11-02T18:15:02.696484+00:00 app[web.1]:
2016-11-02T18:15:02.696487+00:00 app[web.1]: ^
2016-11-02T18:15:02.696486+00:00 app[web.1]: LINE 1: SELECT "users".* FROM "users" WHERE (1) LIMIT 1
2016-11-02T18:15:02.696488+00:00 app[web.1]: : SELECT "users".* FROM "users" WHERE (1) LIMIT 1):
2016-11-02T18:15:02.696488+00:00 app[web.1]: app/controllers/carts_controller.rb:35:in `show'
2016-11-02T18:15:02.696489+00:00 app[web.1]:
2016-11-02T18:15:02.696489+00:00 app[web.1]:
2016-11-02T18:18:42.858131+00:00 heroku[router]: at=info method=GET path="/" host=sleepy-garden-73993.herokuapp.com request_id=5c66a6cc-7de8-43b6-92c3-51b63a3d3ab7 fwd="104.139.26.81" dyno=web.1 connect=1ms service=18ms status=200 bytes=6966
日志中的重要位是:
"ActiveRecord::StatementInvalid (PG::DatatypeMismatch: ERROR: argument of WHERE must be type boolean, not type integer "
下面写着错误发生在 app/controllers/carts_controller.rb:35
https://github.com/kbachand/ginger_ails/blob/master/app/controllers/carts_controller.rb#L35
在那条线上你有:
@user = User.find_by(id: params[:id])
所以看起来 params[:id]
是一个整数,但是 id
列是一个布尔值。
当查看您的 schema.rb 以检查您的列类型时,我意识到您安装了 devise
gem,因此您应该使用设计的助手来验证用户而不是做手动:
https://github.com/plataformatec/devise#controller-filters-and-helpers
如果有帮助请告诉我!