2010-03-07 8 views
19

Estoy intentando llamar a una instancia de costumbre de un error de HTTP 403 en Rails pero me parece que no puede encontrar la manera de hacer esto ...desencadenar un error de HTTP en Rails

Tengo varios autenticación de usuario roles y, básicamente, si un rol intenta navegar a un área que no está autorizada para visitar, quiero mostrar un 403 en lugar de simplemente redirigir al usuario.

¿Cómo puedo hacer esto?

+0

Creo que la respuesta aceptada debe cambiarse: esta es una solución mejor, ya que es el código de error correcto y una mejor presentación para el usuario final: http://stackoverflow.com/questions/9130191/how -to-return-correct-http-error-codes-from-ruby-on-rails-application –

Respuesta

40

En su código de controlador de añadir la siguiente línea:

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

Consulte this page para el código http a una correlación de símbolos.

+1

¡Fantástico! Gracias montones ... FYI te falta una coma después de: prohibido –

+0

Gracias He actualizado la respuesta y he añadido una referencia al código http a la lista de símbolos ruby. –

+0

gracias! estaba a punto de preguntar algo como este –

6

Solo para la posteridad: creo que return 403.html es una solución más agradable, ya que genera una página estándar, al igual que la 404. La solución anterior solo muestra el texto proporcionado. Y como alguien con buenas prácticas solo puede acceder a una página prohibida escribiendo o haciendo clic en un enlace fuera de la aplicación web, una página de error estándar es el camino a seguir.

Cuestiones relacionadas