2010-12-07 3 views
1

자신의 동작 중 일부는 전체 HTML 페이지를 반환 할 수 없지만 HTML/HEAD/BODY ... 태그가없는 콘텐트 만 반환하는 컨트롤러 MyController가 있습니다.특정 동작에 대한 레일스의 사용자 정의 오류 페이지

기본 오류 페이지는 500.html입니다. 실제로는 전체 HTML 페이지이며, 이러한 MyController : actions의 경우 오류 페이지를 전체가 아닌 페이지 형식으로 가져와야합니다.

그 일을하는 한 가지 방법은 다음 MyController에 내부

오버라이드 "render_optional_error_file()"과 행동이 하나의 오류 페이지를 다른 버전으로 나의 특별한 행동을 (내용 인 경우 리디렉션, 비 전체 페이지 태그).

이 방법이 유용할까요? 밖에 나가는 다른 방법?

현재 : 레일 2.3.9로 작업하고 있습니다.

감사합니다, Erez

답변

0

그것은 특히 500 오류의 경우, 어려운 문제의 비트입니다. 응용 프로그램에 오류가 발생하면 500이 렌더링되므로 컨트롤러가 처리하는 동적 페이지를 가질 수 없으며/가질 필요도 없습니다. 컨트롤러가 문제의 원인 일 수 있기 때문입니다.

그러나 404의 경우 404 작업으로 ErrorsController를 설정하고 요청이 XHR 요청인지 아닌지에 따라 다른 레이아웃을 사용할 수 있습니다.

def render_404 
    render "errors/404", :status => 404 
end 

당신이 원하는 어디든지 당신이 당신의 사용자 지정 오류 처리기를 호출 할 수 있습니다 :

그런 다음 당신이 필요로하는 모든 당신의 ApplicationController 등의 방법이다.

(해당되는 경우) 500 오류에 대한 지원을 추가 할 수 있지만 더 큰 문제가 발생할 경우 공용 폴더에 항상 정적 500.html이 필요하다는 것을 기억하십시오.

관련 문제