Спасение от ошибок маршрутизации 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