Спасение от ошибок маршрутизации rails 3.1
Как спасти от RoutingError
в приложении rails 3.1. Если я не ошибаюсь, можно было использовать rescue_from RoutingError
в контроллере приложений, но теперь это невозможно.
3 ответов
нет большого способа справиться с этим, но есть несколько обходных путей. Дискуссия здесь получаем следующее предложение:
маршруты
добавьте в файл маршрутов следующее:
match "*", :to => "home#routing_error"
и обработайте ошибку в этом действии:
def routing_error
render text: "Not found, sorry", status: :not_found
end
Я не смог воспроизвести результаты @matthew-savage. Тем не менее, в направляющей рельсов на маршрут подстановка и этот вопрос на другом вопросе StackOverflow я решил эту проблему следующим образом:
маршруты.rb
match "*gibberish", :to => "home#routing_error"
обратите внимание, как я включил текст после подстановки. Контроллер в порядке, как показано выше:
контроллер/home_controller.rb
....
def routing_error
render text: "Not found, sorry", status: :not_found
end
хороший пример.
маршрут.rb
-
рельсы 3:
match '*unmatched_route', :to => 'application#raise_not_found!'
-
рельсы 4:
get '*unmatched_route' => 'application#raise_not_found!'
application_controller.rb
def raise_not_found!
raise ActionController::RoutingError.new("No route matches #{params[:unmatched_route]}")
end