RecordNotFoundのエラーを処理する方法を知っています
しかし、ルーティングエラー([GET]に一致するルートがありません)をどのように処理できますか?
このトピックのPS答えが見つかりません-Rails-存在しないルートを処理する方法(「[GET]に一致するルートがありません」)?
RecordNotFoundのエラーを処理する方法を知っています
しかし、ルーティングエラー([GET]に一致するルートがありません)をどのように処理できますか?
このトピックのPS答えが見つかりません-Rails-存在しないルートを処理する方法(「[GET]に一致するルートがありません」)?
ルーティング (およびその他すべて) を処理する別の方法は、ApplicationController に以下を追加することです。
unless Rails.application.config.consider_all_requests_local
rescue_from Exception do |e|
render_500 e
end
rescue_from ActionController::RoutingError, with: :render_404
rescue_from ActionController::UnknownController, with: :render_404
rescue_from ActionController::UnknownAction, with: :render_404
rescue_from ActiveRecord::RecordNotFound, with: :render_404
end
render_500
次に、 andを定義しrender_404
て、実際に何かをレンダリングするようにしてください。私のアプリでは、次のことを行いました。
def render_404(exception)
@not_found_path = exception.message
respond_to do |format|
format.html { render template: 'errors/error_404', layout: 'layouts/application', status: 404 }
format.all { render nothing: true, status: 404 }
end
end
そして、 でテンプレートを作成しましたerrors/error_404
。そうすれば、すべてのルーティング エラーを処理しながら、アプリケーション レイアウトを引き続き使用できます。
@not_found_path を使用して、ユーザーにエラーを表示できます。
you の他のすべてのルートの後に、次のconfig/routes.rb
行を追加します。
match '*url' => 'errors#routing'
次に、というコントローラーを作成し、404 の原因となった URL を知るために使用できるアクションErrorsController
を追加します。routing
params[:url]
ところで、あなたのウェブサイトにデッドリンクがあるかどうかを確認する良い方法です。
それが役に立てば幸い !