1

私のアプリは、ユーザーが投票して「投票を取り消す」ことができる「アイデア」を実装しています。ローカルで問題なく動作します。Heroku にプッシュすると、ユーザーは投票できますが、「投票を取り消す」アクションが機能せず、「申し訳ありませんが、問題が発生しました」というメッセージが表示されます。herokuapp.com のページ。

Heroku のログを確認したところ、エラーは次のとおりです。

2012-05-25T09:47:18+00:00 app[web.1]: Started POST "/ideas/remove_vote/1/1" for 88.171.195.199 at 2012-05-25 09:47:18 +0000
2012-05-25T09:47:18+00:00 app[web.1]: Processing by IdeasController#remove_vote as HTML
2012-05-25T09:47:18+00:00 app[web.1]:   Parameters: {"authenticity_token"=>"mJ5daJfBhf+823VTg9C1+YSBdqVFTFPuJWiO2cIx6iQ=", "u_id"=>"1", "i_id"=>"1"}
2012-05-25T09:47:18+00:00 app[web.1]: Completed 500 Internal Server Error in 8ms
2012-05-25T09:47:18+00:00 app[web.1]: : DELETE FROM "votes" WHERE "votes"."" = $1):
2012-05-25T09:47:18+00:00 app[web.1]:   app/controllers/ideas_controller.rb:85:in `remove_vote'
2012-05-25T09:47:18+00:00 app[web.1]: 
2012-05-25T09:47:18+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR:  zero-length delimited identifier at or near """"
2012-05-25T09:47:18+00:00 app[web.1]:                                           ^
2012-05-25T09:47:18+00:00 app[web.1]: LINE 1: DELETE FROM "votes" WHERE "votes"."" = $1
2012-05-25T09:47:18+00:00 app[web.1]: 
2012-05-25T09:47:18+00:00 app[web.1]: cache: [POST /ideas/remove_vote/1/1] invalidate, pass
2012-05-25T09:47:18+00:00 app[web.1]: 

remove_voteidea_controller.rb の私の方法は次のとおりです。

def remove_vote
  @vote = Vote.find_by_user_id_and_idea_id(params[:u_id], params[:i_id])
  @vote.destroy
  redirect_to ideas_path
end

これを修正するアイデアはありますか?ローカル データベースが SQLite であり、Heroku の本番データベースが PostgreSQL であるという事実と関係があると思われますが、投票の追加が機能し、削除が機能しないのは奇妙だと思います。

4

2 に答える 2

2

そのログで発行されている削除ステートメントを見てください。DELETE FROM "votes" WHERE "votes"."" = $1

where句が話しているのはどのコラムですか?それはどのコラムについて話しているべきですか?id 列を使用しないことを説明する Vote モデルに何かありますか?

于 2012-05-25T11:48:04.200 に答える
1

このような問題が発生した場合は、postgres を使用してローカルでアプリケーションを構成/実行することをお勧めします。これにより、Heroku で何が問題なのかを「推測」しようとするのではなく、これらの問題をローカルでデバッグできます。

これは、postgres をローカルで実行するための優れた Railscast です。

http://railscasts.com/episodes/342-migrating-to-postgresql

于 2012-05-25T12:40:43.847 に答える