2010-06-30 3 views

Répondre

1

Vous pouvez sauver ActionController :: RoutingError de application_controller, comme CanCan suggère l'accès non autorisé:

class ApplicationController < ActionController::Base 

    (...) 
    # Reditect to a default route when user inputs a wrong one 
    rescue_from ActionController::RoutingError do |exception| 
    flash[:error] = "There is no such route" 
    redirect_to root_url 
    end 

end 
+0

(...) pas très sûr de ce que cela signifie, mais la méthode fonctionne – s84

+0

Rails utilise cette exception lorsque la reconnaissance de route échoue. Ici, nous arrêtons cette exception et emmenons l'utilisateur ailleurs au lieu de laisser les rails afficher le message d'erreur de route par défaut. Vous pouvez trouver M. Ryan Bates plus illustratif que moi: http://railscasts.com/episodes/53-handling-exceptions – Oinak

5

Vous pouvez ajouter une racine par défaut, récupérer toutes les routes.

Par exemple, un extrait de Typo code source:

map.connect '*from', :controller => 'articles', :action => 'redirect' 

Dans votre contrôleur, vous avez un params [: de] qui un tableau de tous les params de votre URL

+0

Cela ressemble beaucoup, mais je suis à la recherche d'un fourre-tout. Toute faute de frappe est redirigée vers la racine ou une URL par défaut – s84

+1

Qui est-ce. Vous pouvez utiliser la route fourre-tout pour vous connecter à une action spécifique, et dans l'action que vous appelez 'redirect_to'. Ou vous connectez le catch-all directement à l'action que vous voulez que l'utilisateur voit. – averell

+1

Aussi, n'oubliez pas de le mettre à la fin de votre fichier de route :) –

Questions connexes