2013-10-09 2 views
0

acts_as_votable gem을 사용하고 있습니다.투표가 끝나고 응답이 500 상태가됩니다.

$('.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 %> 

내 컨트롤러 액션 :

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이다 : 나는 투표를 할 때

여기 로그입니다

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이 필요한 이유는 무엇입니까?

답변

1

성공적인 분기의 경우, status: :voted을 반환하면 레일스 등록 상태 코드로 500이 반환됩니다. 여기

전체가 심볼 - 투 - 코드 매핑 (2008 링크) http://www.codyfauser.com/2008/7/4/rails-http-status-code-to-symbol-mapping

또는 단순히 숫자 status: 200에 필요한 상태 코드를 사용하여 레일.

+0

감사합니다. 201 또는 202 상태가 더 적절합니까? –

관련 문제