2012-03-15 1 views

ответ

7

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

Маршруты

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

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

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

def routing_error 
    render text: "Not found, sorry", status: :not_found 
end 
+0

Более технически правильный ответ будет 'визуализации текста: "Не найдено, извините", состояние:: not_found, content_type: Mime :: HTML' правильно обрабатывать ответы типа'/icon.png' – kizzx2

+0

Infact, решение от @aboutaaron работало для меня. Просто «*» в шаблоне маршрута не работал. Нужно добавить CRAP :) –

7

Я не смог воспроизвести @ matthew-savage's r esults. Тем не менее, за рельсы руководства по route globbing и this question на другом StackOverflow вопрос, я решил эту проблему следующим образом:

routes.rb

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

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

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

.... 
def routing_error 
    render text: "Not found, sorry", status: :not_found 
end 
0

Хорошее example.

route.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