私はRailsアプリに取り組んでいます。私のアプリでは、config/routes.rbに存在しない URL としてアドレス バーに手動でカスタム ルートを入力すると、以下のエラー メッセージが表示されます。
ルーティング エラー
「/clientImage/blablahblah」に一致するルートはありません
ユーザーが意図的/意図せずに指定したすべての間違ったルートに対して、これを適切な表示にリダイレクトしたいと考えています。どんな助けでも大歓迎です。
私はRailsアプリに取り組んでいます。私のアプリでは、config/routes.rbに存在しない URL としてアドレス バーに手動でカスタム ルートを入力すると、以下のエラー メッセージが表示されます。
ルーティング エラー
「/clientImage/blablahblah」に一致するルートはありません
ユーザーが意図的/意図せずに指定したすべての間違ったルートに対して、これを適切な表示にリダイレクトしたいと考えています。どんな助けでも大歓迎です。
サポートされていない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に入れます
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