Pregunta

Actualmente estoy reutilizando un parcial en dos vistas diferentes.

  

Ver A

     

Vista B

El parcial pertenece al Modelo A pero tiene una asociación con el Modelo B, por lo que también es aplicable al Modelo B.

Contiene un formulario y cuando se envían datos, siempre redirige al usuario a la Vista A. Sin embargo, cuando envío el formulario desde la Vista B, me gustaría ser redirigido a la Vista B en lugar del Formulario A.

La razón por la que redirige en este momento a la Vista A es porque ese es el modelo al que pertenece este formulario. Entonces, cuando se publica, habla con el controlador A y usa una redirección para llevar al usuario a a_url.

¿Cómo puedo decirle a mi formulario (o más para que la acción del controlador) redirija al usuario de regreso a su lugar de origen?

¡Gracias!

¿Fue útil?

Solución

Resuelto.

Agregué un campo oculto a mi formulario que contenía el nombre del controlador de donde se procesó el parcial y luego mi respuesta_bloque determinó a dónde enviar al usuario.

Ver código:

<%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>

Mi código de controlador:

if params[:submitted_from] == 'A'
  redirect_to a_url
else
  redirect_to b_url
end

Otros consejos

En lugar de usar una etiqueta oculta, puede colocar esto en la sesión:

session[:submitted_from] = new_model_url

y en la otra acción ..

redirect_to(session[:submitted_from])
session[:submitted_from] = nil

Es bastante fácil cambiar las variables de formulario, mientras que puede ser más difícil (pero no imposible) forjar una sesión. Iría por esta ruta si fuera mi aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top