Me gustaría poder enviar de una acción de controlador a otra condicionalmente, en base a una combinación de parámetros de consulta y datos en la base de datos.¿Cuál es la forma correcta de ejecutar una acción de controlador desde otra acción de controlador sin una redirección HTTP?
Lo que tengo en este momento es algo así como:
class OldController < ApplicationController
def old_controller_action
if should_use_new_controller
new_params = params.dup
new_params[:controller] = "new_controller_action"
redirect_to new_params
return
end
# rest of old and busted
end
end
class NewController < ApplicationController
def new_controller_action
# new hotness
end
end
Esto funciona muy bien, pero emite una redirección HTTP, que es lento. Me gustaría poder hacer lo mismo, pero dentro de la misma solicitud HTTP.
¿Hay una manera limpia de hacer esto?
Editar sección: La recompensa se destinará a alguien que me puede mostrar una forma limpia de hacer esto que deja los controladores y sus acciones relativamente intactos (que no sea el código de redirección).
Sí, me hubiera ocurrido esto también, aunque no es una opción muy emocionante, desde la perspectiva de la organización del código. –
Es realmente bien, ya que crea en el método denominado de cohesión a partir de dos lugares eso es fácilmente comprobable –