Lo stesso parziale su più viste che ritorna a qualunque vista da cui è stato chiamato
-
19-08-2019 - |
Domanda
Attualmente sto riutilizzando un parziale in due diverse visualizzazioni.
Visualizza A
Visualizza B
Il parziale appartiene al modello A ma ha un'associazione con il modello B, quindi è applicabile anche al modello B.
Contiene un modulo e quando i dati vengono inviati, reindirizza sempre l'utente alla vista A. Tuttavia, quando invio il modulo dalla vista B, vorrei essere reindirizzato alla vista B anziché al modulo A.
Il motivo per cui reindirizza in questo momento a Visualizza A è perché questo è il modello a cui appartiene questo modulo. Quindi, quando pubblicato, parla con il controller A e usa un reindirizzamento per portare l'utente a a_url.
Come posso dire al mio modulo (o più in modo che l'azione del controller) di reindirizzare l'utente da dove provengono?
Grazie!
Soluzione
risolto.
Ho aggiunto un campo nascosto al mio modulo che conteneva il nome del controller di dove era stato eseguito il rendering del parziale e quindi il mio response_to blocco ha determinato dove inviare l'utente.
Visualizza codice:
<%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>
Codice del mio controller:
if params[:submitted_from] == 'A'
redirect_to a_url
else
redirect_to b_url
end
Altri suggerimenti
Invece di usare un tag nascosto, potresti volerlo inserire nella sessione:
session[:submitted_from] = new_model_url
e nell'altra azione ..
redirect_to(session[:submitted_from])
session[:submitted_from] = nil
È abbastanza facile cambiare le variabili del modulo, mentre potrebbe essere più difficile (ma non impossibile) creare una sessione. Vorrei seguire questa strada se fosse la mia applicazione.