[RUBY-ON-RAILS] rescue_from ActionController :: RoutingError 레일 4
RUBY-ON-RAILSrescue_from ActionController :: RoutingError 레일 4
나는 다음과 같은 오류가있어 :
ActionController::RoutingError (No route matches [GET] "/images/favicon.ico")
나는 존재하지 않는 링크 error404 페이지를 표시 할.
나는 어떻게 달성 할 수 있습니까?
해결법
-
==============================
1.application_controller.rb에 다음을 추가합니다 :
application_controller.rb에 다음을 추가합니다 :
# You want to get exceptions in development, but not in production. unless Rails.application.config.consider_all_requests_local rescue_from ActionController::RoutingError, with: -> { render_404 } end def render_404 respond_to do |format| format.html { render template: 'errors/not_found', status: 404 } format.all { render nothing: true, status: 404 } end end
나는 보통 또한 예외를 다음과 같은 구조, 그러나 그것은 당신에게 달려 있습니다 :
rescue_from ActionController::UnknownController, with: -> { render_404 } rescue_from ActiveRecord::RecordNotFound, with: -> { render_404 }
오류 컨트롤러를 만들기 :
class ErrorsController < ApplicationController def error_404 render 'errors/not_found' end end
그리고 routes.rb에서
unless Rails.application.config.consider_all_requests_local # having created corresponding controller and action get '*path', to: 'errors#error_404', via: :all end
그리고 마지막 것은 / 뷰 / 오류에 따라 (또는 당신이 사용하는 어떤 템플릿 엔진) not_found.html.haml 만드는 것입니다 / :
%span 404 %br Page Not Found
-
==============================
2.@Andrey Deineko는 솔루션 만 conrtoller 내부에 수동으로 제기 된 RoutingErrors에 대한 작동하는 것 같다. 나는의 URL을 my_app 그것을 시도 할 경우 / not_existing_path, 난 여전히 표준 오류 메시지가 표시됩니다.
@Andrey Deineko는 솔루션 만 conrtoller 내부에 수동으로 제기 된 RoutingErrors에 대한 작동하는 것 같다. 나는의 URL을 my_app 그것을 시도 할 경우 / not_existing_path, 난 여전히 표준 오류 메시지가 표시됩니다.
나는 레일 전에 오류가 발생하기 때문에 응용 프로그램도, 컨트롤러에 도달하지 않기 때문이다 같아요.
나를 위해 문제를 해결 비결은 경로의 끝에 다음 줄을 추가했다 :
Rails.application.routes.draw do # existing paths match '*path' => 'errors#error_404', via: :all end
모든하지 미리 정의 된 요청을 잡을 수 있습니다.
그런 다음 ErrorsController에 당신은 HTML, JSON ... 요청을 처리하기 위해 respond_to를 사용할 수 있습니다 :
class ErrorsController < ApplicationController def error_404 @requested_path = request.path repond_to do |format| format.html format.json { render json: {routing_error: @requested_path} } end end end
-
==============================
3.응용 프로그램 / 자산 / 이미지의 복사 파비콘 이미지는 나를 위해 일했다.
응용 프로그램 / 자산 / 이미지의 복사 파비콘 이미지는 나를 위해 일했다.
from https://stackoverflow.com/questions/25841377/rescue-from-actioncontrollerroutingerror-in-rails-4 by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] ERROR : 매버릭스에 빌드 보석 네이티브 확장에 실패 (0) | 2020.02.16 |
---|---|
[RUBY-ON-RAILS] 창을 사용하여 레일에 JSON 보석을 설치할 수 없습니다 (0) | 2020.02.16 |
[RUBY-ON-RAILS] (액티브) 개체 평등을 테스트하는 방법 (0) | 2020.02.16 |
[RUBY-ON-RAILS] 루비 2.4과 너무 깊이 레일 4 스택 레벨 (SystemStackError) (0) | 2020.02.16 |
[RUBY-ON-RAILS] 액티브 레코드 테이블에 대량 삽입 기록 (0) | 2020.02.16 |