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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top