2016-11-02 16 views
0

こんにちは、私は地元で素晴らしいアプリを持っていますが、ヘロクにプッシュすると問題が発生します。レイルズアプリのHerokuステータス500内部サーバーエラー(申し訳ありませんが何かが間違っていました)

Herokuのリンク:https://sleepy-garden-73993.herokuapp.com
GitHubのレポ: リソースの読み込みに失敗しました::サーバは500(内部サーバーエラー)の状態

どのように応答したページをINSPECTコンソールでhttps://github.com/kbachand/ginger_ails

ERROR
- 「あなたの住所を確認」をクリックし、アドレスを入力してください:202 tryon st;郵便番号:28207
- 「あなたの病気を選択」をクリックして、いずれかを選択してください。
- 「購入救済キット」をクリックすると、ログインまたはサインアップを促すメッセージが表示されます。あなたが望むなら、私のログインは[email protected]でパスワードは:surfsup714
- ログイン後、「購入救済キット」をクリックすると、カート内のすべてのアイテムを表示するビューをレンダリングしなければならない(SHOULD)ストライプ経由で空にするか購入することができます。しかし、代わりにエラーが発生します。

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" = $1 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 
+0

carts_controller.rbの35行目に 'User.find(params [:id])'が必要です。 –

+0

私はそれを持っていて動作しませんでした。 @user = User.find_by(id:params [:id])これは、削除する必要があるというコメントが追加されました。ジュニアレベルの開発者として、私はちょうどあなたが入力したのと対を成し遂げるようにしなければならない理由を知りたいと思います。 –

+0

'User.find_by_xyz(xyz:1)'は 'find_by_'の後に来る属性を探します。この場合は 'xyz'です。 'find()'で検索すると、プライマリキーで検索されます。あなたの場合はおそらく 'id'です。 –

答えて

0

ログ上の重要なビットは、以下のとおりです。

「はActiveRecord :: StatementInvalid(PG :: DatatypeMismatch:ERROR:boolean型でなければなりませんWHEREの引数、整数を入力しません「それ以下

読み取りエラーがそれに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宝石がインストールされている実現:

https://github.com/plataformatec/devise#controller-filters-and-helpers

それが役に立ったら教えてください!

+0

ありがとうございます!私は間違いなく、私の人生をとにかく簡単にするdeviseヘルパーを使用して開始します! –

+0

@KeithBachandお待ちしております!あなたはその答えを受け入れることができますか? – rebagliatte

関連する問題