• Skip to main content
  • Skip to header right navigation
  • Skip to site footer

Antonio Pérez

Full Stack developer

  • Home
  • Sobre mi
  • Podcast
  • Blog
  • Contacto
desarrollo full stack

Rails 5+, como usar redirect_back

You are here: Home / Desarrollo Back End / Rails 5+, como usar redirect_back
20/03/2020 by apcano1978

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

Categoría: Desarrollo Back End, Desarrollo web, Ruby on Rails

About 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 …

Previous Post:ruby on railsComo usar .nil?, .empty?, .blank? y .present? correctamente en Ruby on Rails
Next Post:Añadir estilos de Material Design a un proyecto de Rails 6desarrollo full stack

Reader Interactions

Deja una respuesta Cancelar la respuesta

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

Ahora también en youtube

Ve al canal

Copyright © 2023 · Antonio Pérez · All Rights Reserved · Powered by Mai Theme