Спасение от маршрутизации ошибок рельсов 3.1 - PullRequest
7 голосов
/ 15 марта 2012

Как спасти от RoutingError в приложении рельсы 3.1. Если я не ошибаюсь, можно было использовать rescue_from RoutingError в контроллере приложений, но теперь это невозможно.

Ответы [ 3 ]

7 голосов
/ 30 апреля 2013

Мне не удалось воспроизвести результаты @ matthew-savage. Однако, согласно руководству Rails по маршрутизации и этого вопроса по другому вопросу StackOverflow, я решил эту проблему так:

routes.rb

match "*gibberish", :to => "home#routing_error"

обратите внимание, как я включил текст после подстановочного знака. Контроллер в порядке, как показано выше:

Контроллер / home_controller.rb

....
def routing_error
    render text: "Not found, sorry", status: :not_found
end
7 голосов
/ 15 марта 2012

Нет отличного способа справиться с этим, но есть несколько обходных путей.Обсуждение здесь дает следующее предложение:

Маршруты

Добавьте следующее в ваш файл маршрутов:

match "*", :to => "home#routing_error"

и обработайте ошибку в этом действии:

def routing_error
  render text: "Not found, sorry", status: :not_found
end
0 голосов
/ 15 апреля 2016

Хорошо пример .

route.rb

  • Rails 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...