• Ir a navegación principal
  • Ir al contenido principal
  • Ir a la barra lateral primaria
  • Ir al pie de página

Antonio Pérez

Full Stack developer

  • Inicio
  • Sobre mi
  • Full Stack Podcast
  • Blog
  • Contacto

Rails 5+, como usar redirect_back

Usted está aquí: Inicio / Desarrollo Back End / Rails 5+, como usar redirect_back

20/03/2020 por apcano1978 Dejar un comentario

Desde la aparición de Rails 5, hay un método que nos ha ayudado mucho con nuestras redirecciones en los controladores. Se trata del método redirect_back, cuyo propósito es, tan solo, redireccionar a la página en la que estábamos tras una acción determinada, un create, un update, etc…

En Rails 4 y versiones anteriores, esta redirección se hacía mediante el archiconocido redirect_to :back. Y la verdad es que estaba muy bien, pero tiene un pequeño problema. Vamos a ver en detalle su funcionamiento

redirect_to :back lo que hace es redirigirnos a HTTP_REFERER pero que ocurre cuando no está presente, ahí es donde viene el problema, nos lanza una excepción y no queremos que lo haga al redirigir a una vista porque está muy feo.

En este caso, hasta Rails 4 teníamos que evitar nuestra excepción con algo así:

class UsersController < ApplicationController
  rescue_from ActionController::RedirectBackError, with: :redirect_to_default

  def update
    user.update(user_params)
    redirect_to :back
  end

  private

  def redirect_to_default
    redirect_to root_path
  end
end

Y como somos desarrolladores premium, no nos gusta tener que escribir este tochaco de código solo para redirigir si falla el redirect_to. Cada línea de código extra es una posibilidad más de equivocarnos así que…

Aquí es donde redirect_back viene en nuestra ayuda, vamos a desglosar también exactamente como funciona:

redirect_back(fallback_location: root_path)

Como véis, simplemente le hemos añadido un fallback_location, que será donde nos redirigirá si no tenemos disponible HTTP_REFERER. Vamos a ver cómo quedaría el código anterior usando redirect_back

class UsersController < ApplicationController
  def update
    user.update(user_params)
    redirect_back(fallback_location: root_path)
  end
end

Mirad que preciosidad, mucho más compacto, limpio y corto ¿Es para enamorarse de Rails o no? Si queréis ver la documentación oficial de Rails del método aquí os dejo el enlace en api.rubyonrails.org

Archivado en:Desarrollo Back End, Desarrollo web, Ruby on Rails

Acerca de apcano1978

Intento nadar entre frameworks, IDEs, SDKs... Algunos lo llaman Full stack developer, yo creo que es solo un eufemismo para decir "el que está en medio de todos los follones" Ruby on Rails y Angular ... y bastante tengo ...

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Barra lateral primaria

Si quieres contactar conmigo y comentarme tus impresiones adelante!

Suscríbete a Full Stack Podcast

Y únete a nuestro canal de telegram en t.me/fullstackpodcast para participar activamente y formar parte de una gran comunidad de desarrolladores!

Lo último en Full Stack Podcast

  • Historias del backend con república web
    11/07/2020
    1 hour 25 minutes

  • Scrum y gestión de proyectos
    13/06/2020
    45 minutes

  • Webpack
    03/05/2020
    31 minutes

Footer

  • Facebook
  • GitHub
  • LinkedIn
  • Twitter
  • YouTube

Copyright © 2021 — Antonio Pérez • Todos los derechos reservados - Iniciar sesión