0

私はRailsアプリに取り組んでいます。私のアプリでは、config/routes.rbに存在しない URL としてアドレス バーに手動でカスタム ルートを入力すると、以下のエラー メッセージが表示されます。

ルーティング エラー

「/clientImage/blablahblah」に一致するルートはありません

ユーザーが意図的/意図せずに指定したすべての間違ったルートに対して、これを適切な表示にリダイレクトしたいと考えています。どんな助けでも大歓迎です。

4

2 に答える 2

3

サポートされていないURLを入力すると、RailsはActionController::RoutingErrorを発生させます。このエラーを救済して、404 NotFoundhtmlをレンダリングできます。

Railsは、この目的のためにrescue_fromと呼ばれる特別な関数を提供します。

class ApplicationController < ActionController::Base
   rescue_from ActionController::RoutingError, :with => :render_not_found
   rescue_from StandardError, :with => :render_server_error

   protected
     def render_not_found
        render "shared/404", :status => 404
     end

     def render_server_error
        render "shared/500", :status => 500
     end
end

404.html、500.htmlをapp / views/sharedに入れます

于 2013-01-25T11:52:46.167 に答える
2
Yourapp::Application.routes.draw do
  #Last route in routes.rb
  match '*a', :to => 'errors#routing'
end

"a" は、実際には Rails 3 Route Globbing テクニックのパラメーターです。たとえば、URL が /this-url-does-not-exist の場合、params[:a] は「/this-url-does-not-exist」と等しくなります。そのため、その不正なルートを処理したいのと同じくらい創造的です.

app/controllers/errors_controller.rb 内

 class ErrorsController < ApplicationController
      def routing
       render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
      end
    end
于 2013-01-25T11:03:27.430 に答える