2010-03-07 8 views
19

Ich versuche, in Rails eine benutzerdefinierte Instanz eines 403 HTTP-Fehler zu nennen, aber ich kann nicht scheinen, um herauszufinden, wie diese ...in Rails einen HTTP-Fehler auslösen

zu tun, habe ich mehrere Benutzerauthentifizierung Rollen und im Grunde, wenn eine Rolle versucht, zu einem Bereich zu navigieren, den sie nicht besuchen darf, möchte ich einen 403 anzeigen, anstatt nur den Benutzer umzuleiten.

Wie kann ich das tun?

+0

Ich denke, die akzeptierte Antwort sollte geändert werden - das ist eine bessere Lösung, da es der richtige Fehlercode sowie eine bessere Präsentation für den Endbenutzer ist: http://stackoverflow.com/questions/9130191/how -zur-Rückkehr-korrigieren-http-Fehler-Codes-von-Ruby-on-Rails-Anwendung –

Antwort

40

In Ihrem Controller-Code die folgende Zeile:

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

zu this page Siehe für http-Code-Symbol-Mapping.

+1

Fantastisch! Vielen Dank ... FYI du verpasst ein Komma nach: verboten –

+0

Danke Ich habe die Antwort aktualisiert und einen Verweis auf http-Code zu Ruby-Symbol-Liste hinzugefügt. –

+0

danke! wollte gerade so etwas fragen –

6

Nur für Nachwelt: Ich denke, return 403.html ist eine bessere Lösung, weil es eine Standardseite generiert, genau wie die 404. Die obige Lösung zeigt nur den angegebenen Text. Und weil jemand in guter Praxis nur auf eine verbotene Seite gehen kann, indem er einen Link außerhalb der Web-App eintippt oder klickt, ist eine Standardfehlerseite der richtige Weg.

Verwandte Themen