2

RecordNotFoundのエラーを処理する方法を知っています

しかし、ルーティングエラー([GET]に一致するルートがありません)をどのように処理できますか?

このトピックのPS答えが見つかりません-Rails-存在しないルートを処理する方法(「[GET]に一致するルートがありません」)?

4

2 に答える 2

6

ルーティング (およびその他すべて) を処理する別の方法は、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 を使用して、ユーザーにエラーを表示できます。

于 2012-06-21T14:23:43.077 に答える
3

you の他のすべてのルートの後に、次のconfig/routes.rb行を追加します。

match '*url' => 'errors#routing'

次に、というコントローラーを作成し、404 の原因となった URL を知るために使用できるアクションErrorsControllerを追加します。routingparams[:url]

ところで、あなたのウェブサイトにデッドリンクがあるかどうかを確認する良い方法です。

それが役に立てば幸い !

于 2012-06-21T13:07:01.530 に答える