Возможно, это не лучший подход, но он будет работать, пока вы не найдете лучшего решения
для рельсов 2.3, на контроллере приложения, поймать исключение как
rescue_from(ActionController::RoutingError) { redirect_to "/xpto" #add your code here }
Рельсы 3
В инициализаторе поставить код вроде:
module ActionDispatch
class ShowExceptions
def render_exception(env, exception)
if exception.kind_of? ActionController::RoutingError
render(500, 'it was routing error')
else
render(500, "some other error")
end
end
end
конец
или что-то более чистое, например:
или:
match '/:anything', :to => "home#routing_error", :constraints => { :anything => /.*/ }
но, возможно, этот последний матч не будет вам полезен, так как он переопределит все маршруты из плагинов / движков. Я думаю, что лучшим решением является использование специализированного промежуточного программного обеспечения для работы с особыми случаями.