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

如果有帮助请告诉我!