2012-03-15 11 views

Respuesta

7

No hay una gran manera de manejarlo, pero hay algunas soluciones. La discusión here se obtiene la siguiente sugerencia:

Rutas

Añadir lo siguiente a su archivo de rutas:

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

y gestionar el error en esta acción:

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

La respuesta técnicamente más correcta sería 'representar el texto: "No se ha encontrado, lo siento", estado:: not_found, content_type: Mime :: html' manejar correctamente las respuestas como'/icon.png' – kizzx2

+0

De hecho, la solución de @aboutaaron funcionó para mí. Solo un "*" en el patrón de ruta no funcionó. Necesito agregar un poco de CRAP :) –

7

No pude replicar el r de @ matthew-savage esults. Sin embargo, por los carriles de guía en route globbing y this question en otra pregunta StackOverflow, he resuelto este problema de este modo:

routes.rb

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

aviso cómo he incluido el texto después de que el comodín. El controlador está bien como se muestra arriba:

controlador/home_controller.rb

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

Bueno example.

route.rb

  • Rails 3:

    match '*unmatched_route', :to => 'application#raise_not_found!'

  • Carriles 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 
Cuestiones relacionadas