2010-03-07 10 views
19

J'essaie d'appeler une instance personnalisée d'une erreur HTTP 403 dans Rails, mais je ne peux pas sembler comprendre comment faire ...déclencher une erreur HTTP dans Rails

J'ai plusieurs authentification de l'utilisateur rôles et, fondamentalement, si un rôle essaie de naviguer vers une zone qu'il n'est pas autorisé à visiter, je veux afficher un 403 au lieu de simplement rediriger l'utilisateur.

Comment faire?

+0

Je pense que la réponse acceptée devrait être changée - celle-ci est une meilleure solution, car c'est le code d'erreur correct ainsi qu'une meilleure présentation à l'utilisateur final: http://stackoverflow.com/questions/9130191/how -to-return-correct-http-error-codes-de-ruby-on-rails-application –

Répondre

40

Dans votre code de contrôleur ajoutez la ligne suivante:

render :status => :forbidden, :text => "Forbidden fruit" 

Se reporter à this page pour le code HTTP pour la cartographie des symboles.

+1

Fantastique! Merci tas ... FYI vous manque une virgule après: interdit –

+0

Merci J'ai mis à jour la réponse et ajouté une référence à la liste de symboles de code http ruby. –

+0

merci! était sur le point de demander quelque chose comme ça –

6

Juste pour la postérité: Je pense que return 403.html est une meilleure solution, car elle génère une page standard, tout comme la 404. La solution ci-dessus n'affiche que le texte donné. Et parce que quelqu'un en bonne pratique peut seulement aller à une page interdite en tapant ou en cliquant sur un lien en dehors de l'application web, une page d'erreur standard est la voie à suivre.