2014-10-01 3 views
0

누군가가 내 API에 정수 값과 다른 값으로 액세스하면 400 오류가 반환됩니다. 예외의 경우에 나는 AbstractController::DoubleRenderError를 얻을오류 발생시 상태 코드 렌더링

def index 
    @returnType = MyType.all 

    if params["limit"].present? 
     begin 
      limit = Integer(limit) 
     rescue Exception=>e 
      render status: :bad_request 
     end 
    end 

    respond_to do |format| 
     format.json 
    end 
end 

그러나 :

내을 최소한 인덱스 방법이다.

문제는 레일스가 render에있는 방법을 멈추지 않는다는 것입니다. respond_to 부분에서 계속됩니다.

답변

1

당신은 render and return해야합니다

if params["limit"].present? 
    begin 
     limit = Integer(limit) 
    rescue Exception=>e 
     render status: :bad_request 
     return 
    end 
end 

이 오류를 렌더링 한 다음 방법의 실행을 중지합니다.

+1

참고 : 영어의 '및'및 '또는'연산자는주의해야합니다. 읽기 : http://devblog.avdi.org/2014/08/26/how-to-use-rubys-english-and-operators-withgoing-going-nuts/ – Surya

+0

@ 수 리아를 분명히했지만, 이 상황에서 혼란 스럽다. – Undo

+0

당신의 솔루션은 훌륭하지만 +1하지만 Ruby 생태계에 익숙하지 않은 사람들은 SO에 게시 된 답변에서 더 많은 것을 배웁니다. 그래서,'&&'와'and'는 초보자들이 응용 프로그램과 혼동을 일으키고 있으며, 답이 나왔기 때문에 다른 사람들을 위해 메모 해 두었습니다. :) – Surya

관련 문제