2010-03-07 8 views
19

Sto cercando di chiamare un campione personalizzato di un errore HTTP 403 in Rails, ma io non riesco a capire come fare questo ...Attivare un errore HTTP in Rails

Ho diversi autenticazione degli utenti ruoli e, in sostanza, se un ruolo cerca di esplorare un'area che non è autorizzata a visitare, desidero visualizzare un 403 anziché reindirizzare l'utente.

Come posso fare?

+0

Penso che la risposta accettata debba essere cambiata: questa è una soluzione migliore, poiché è il codice di errore corretto e una presentazione migliore per l'utente finale: http://stackoverflow.com/questions/9130191/how -to-return-correct-http-error-codes-from-ruby-on-rails-application –

risposta

40

Nel codice del controller aggiungere la seguente riga:

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

Fare riferimento alla this page per il codice http alla mappatura simbolo.

+1

Fantastico! Grazie mille ... FYI ti manca una virgola dopo: proibito –

+0

Grazie ho aggiornato la risposta e aggiunto un riferimento al codice http alla ruby ​​symbol list. –

+0

grazie! stava per chiedere qualcosa proprio così –

6

Solo per i posteri: penso che return 403.html sia una soluzione migliore, perché genera una pagina standard, proprio come la 404. La soluzione di cui sopra visualizza solo il testo indicato. E poiché qualcuno in buona pratica può solo accedere a una pagina vietata digitando o facendo clic su un collegamento esterno all'app Web, una pagina di errore standard è la strada da seguire.