回答1
これは易しくもあり難しくもあります、
易しいほうは
ActionController::RoutingError はFATALではないです。
その例外を処理するルーチンがないので、元締めがしかたなく FATAL にしています、
難しいほうは
methos Aで「No route matches」 という問題が起きた時に、エラーを返すのか例外をraiseするのか、実装するときに悩みます。その問題を対処すべきルーチンが、直接Aを呼んでいるならどちらでも大差ないです。
ですが、下請の下請の下請の下請の下請の下請の下請の下請の下請の下請が呼んでいる場合はエラーを返すと厄介です。下請け達全てにAが問題を起こしたと上に伝える必要があります。例外なら、下請けはそれを見なかったことにすれば元請けまで届きます。
回答2
ApplicationController に
rescue_from ActionController::RoutingError, with: :handle_500
def handle_500(e)
render file: '/public/500.html', status: 500,layout: nil
end
って書くと、そんなURLないよ、というのがブラウザーに帰ります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。