Llamando a un controlador desde otro

Quiero llamar a una acción de un controlador desde otro controlador.

¿Cómo puedo hacer esto?

Hace algunos años, había componentes, pero ya no están disponibles.

Atentamente

No puedes llamar al método de acción de otro controlador.
Sólo tienes dos soluciones.

Haciendo una redirección a la URL apropiada.

redirect_to '/' 

Pero, por supuesto, si tiene datos de un formulario, los pierde.

Renderiza la acción desde otro controlador.

 render 'controller/action' 

Mantienes todos tus datos definidos (params y todo).
Pero tienes que volver a hacer todo lo que haría el otro controlador.

Una solución para evitar la repetición de líneas de código sería tener un método de biblioteca que defina cada vars que necesite en su vista y utilice este método en sus dos controladores.

redirect_to es la forma preferida de hacer esto.

Si solo desea representar la vista de la otra acción con la lógica de la acción actual, puede pasar la vista como una opción para renderizar.

 render 'other_controller/action'