2009-03-29 6 views
0

현재 내 레일 응용 프로그램에서 오류가 발생하면 브라우저 창에 오류 코드와 스택 추적을 덤프합니다.레일 유효성 검사 오류 처리

이 오류를 로그에 기록하고 브라우저로 출력하지 않으려면 어떻게합니까?

당신에게

보정 감사합니다 난 단지 유효성 검사 오류가 주로 걱정. 원하는 것은 생성 된 스캐 폴딩을 사용할 때와 동일한 기능입니다. 유효성 검사 오류 메시지를 표시하고 잘못된 양식 필드를 강조 표시하고 싶습니다. 지금 내가 얻는 것은 표준 개발 오류 출력이다. 원래이 응용 프로그램에서 작동하지만 어떻게 든 그것은 손실되었습니다.

답변

6

서버가 프로덕션 모드에서 오류가 발생하면 개발 모드에서 볼 수있는 스택 추적이 아니라 기본 레일 오류 페이지가 표시됩니다.

사용자 정의 정적 HTML 500 또는 404 오류 페이지를 public/500.html 및 public/404.html에 추가하여 추가 할 수 있습니다. 당신이 다른 오류를 처리하려는 경우

, 당신은 당신의와 ApplicationController에 다음 코드를 넣을 수 있습니다 (이 코드는 테스트되지 않은,하지만 내 프로젝트 중 하나에 매우 유사한 방법에 근거) :

around_filter :handle_errors 

def handle_errors 
    begin 
    yield 
    rescue Exception => e 
    # Handle the exception however you wish. 
    end 
end 

위의 코드는 404 오류를 처리하지 않습니다. 그러나, 당신은 설정/routes.rb의 하단에 다음 넣어 찾을 수없는 경로를 처리하는 기본 동작을 지정할 수 있습니다

map.connect '*path', :controller => 'home', :action => 'page_not_found' 

편집 :

좀 더 연구를 수행 한 후, 대체 오류 가능성이있는 사용자 지정 오류 처리 방법이 있습니다 (http://brian.pontarelli.com/2007/01/14/handling-rails-404-and-500-errors/). 기본적으로 권고는 다음과 같은 rescue_action_in_public 방법을 덮어 쓸 수 있습니다 : 당신은 또한 당신의 필터는 레일에 의해 정의 된 다른 필터에 던져 오류를 포착하지 않습니다해야

def rescue_action_in_public(exception) 
    render :template => "shared/error", :layout => "standard", :status => "500" 
    end 
+0

. 주요 범죄자는 진위성 토큰을 확인하는 것입니다. – Samuel

+1

답변을 주셔서 감사합니다. 그러나 정확히 내가 찾던 내용이 아닙니다. 제 질문은 분명하지 않아서 제가 고쳐 주셨습니다. 이 답변은 앞으로 유용 할 것입니다. – stellard