0

私はacts_as_votable gemを使用しています。

投票したときのログは次のとおりです。

Started PUT "/stories/11/vote" for 127.0.0.1 at 2013-10-09 15:50:58 +0800
Processing by StoriesController#vote as JSON
  Parameters: {"id"=>"11"}
  Story Load (0.6ms)  SELECT "stories".* FROM "stories" WHERE "stories"."id" = $1 LIMIT 1  [["id", "11"]]
  User Load (1.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 14 ORDER BY "users"."id" ASC LIMIT 1
  Persona Load (0.4ms)  SELECT "personas".* FROM "personas" WHERE "personas"."id" = $1 LIMIT 1  [["id", 15]]
   (0.4ms)  SELECT COUNT(*) FROM "votes" WHERE "votes"."votable_id" = $1 AND "votes"."votable_type" = $2 AND "votes"."voter_id" = 15 AND "votes"."vote_scope" IS NULL AND "votes"."voter_type" = 'Persona'  [["votable_id", 11], ["votable_type", "Story"]]
  ActsAsVotable::Vote Load (3.4ms)  SELECT "votes".* FROM "votes" WHERE "votes"."votable_id" = $1 AND "votes"."votable_type" = $2 AND "votes"."voter_id" = 15 AND "votes"."vote_scope" IS NULL AND "votes"."voter_type" = 'Persona' ORDER BY "votes"."id" ASC LIMIT 1  [["votable_id", 11], ["votable_type", "Story"]]
   (0.2ms)  BEGIN
   (0.2ms)  COMMIT
   (0.3ms)  SELECT COUNT(*) FROM "votes" WHERE "votes"."votable_id" = $1 AND "votes"."votable_type" = $2  [["votable_id", 11], ["votable_type", "Story"]]
   (0.4ms)  SELECT COUNT(*) FROM "votes" WHERE "votes"."votable_id" = $1 AND "votes"."votable_type" = $2 AND "votes"."vote_flag" = 't' AND "votes"."vote_scope" IS NULL  [["votable_id", 11], ["votable_type", "Story"]]
   (0.3ms)  SELECT COUNT(*) FROM "votes" WHERE "votes"."votable_id" = $1 AND "votes"."votable_type" = $2 AND "votes"."vote_flag" = 'f' AND "votes"."vote_scope" IS NULL  [["votable_id", 11], ["votable_type", "Story"]]
   (0.3ms)  BEGIN
   (0.2ms)  COMMIT
Completed 500 Internal Server Error in 34ms (Views: 1.6ms | ActiveRecord: 8.0ms)

これは私のJSです:

$('.story-vote-up').on("ajax:success", function(evt, data, status, xhr) {
    console.log(data);
  }).on("ajax:error", function(evt, data, status, xhr){
    console.log(data);
  });

そして link_to:

<%= link_to 'Vote', vote_story_path(story), method: :put, remote: true %>

そして私のコントローラーアクション:

  def vote
    @story = Story.find(params[:id])
    respond_to do |format|
        if @story.liked_by default_persona
          format.html { redirect_to @story, notice: 'Voted' }
          format.json { render json: @story, status: :voted, location: @story }
        else
          format.html { redirect_to @story, notice: 'Error voting' }
          format.json { render json: @story.errors, status: :unprocessable_entity }
        end
      end
  end

必要な応答でデータを取得できますが、ステータスが 500 になるのはなぜですか?

4

1 に答える 1

1

status: :votedRailsに登録されていないステータスコードとして500が返されるブランチが成功した場合に返されます。

これはレール全体のシンボルからコードへのマッピングです (2008 リンク) http://www.codyfauser.com/2008/7/4/rails-http-status-code-to-symbol-mapping

または、単純に必要なステータス コードを number で使用しますstatus: 200

于 2013-10-09T08:22:07.450 に答える