Come posso reindirizzare più azioni su una singola azione mantenendo il DRY?
-
10-07-2019 - |
Domanda
Ho un OptionsController
, che contiene un'azione account
. La vista corrispondente ha tre forme, che pubblicano tre diverse azioni, update_profile
, update_user
e change_password
. Ogni azione viene eseguita e quindi reindirizzata nuovamente a action
, dove la vista viene nuovamente impostata e resa.
Stavo cercando di ESSERE SECCO e creare un after_filter
per eseguire il reindirizzamento:
after_filter( :only => [:change_password, :update_profile, :update_user] ) do |controller|
controller.send(:redirect_to, :action => :account)
end
Tuttavia, questo non sembra essere chiamato; piuttosto, l'azione si lamenta che il suo punto di vista non può essere trovato.
Template is missing
Missing template options/update_user.erb in view path app/views
Esiste un modo per farlo in modo SECCO, o dovrei semplicemente applicare il reindirizzamento_per chiamare in ciascuna delle tre azioni?
Soluzione
inserisci semplicemente la chiamata redirect_to
in ciascuna delle azioni. C'è una linea sottile tra DRY e la magia incomprensibile. Ho voglia di provare a fare qualcosa come un after_filter
o qualsiasi altra cosa che infrange in modo inopportuno il comportamento previsto di un'azione è probabilmente troppa magia.
Altri suggerimenti
Sono consapevole che dopo che i filtri sono stati eseguiti dopo la risposta viene inviata al client, il che significa che dopo che si verificano rendering o reindirizzamenti, è per questo che stai vedendo quell'errore. Hanno lo scopo di farti fare cose come dati di registro, benchmark o connessioni chiuse o qualsiasi altro tipo di pulizia che hai