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?

È stato utile?

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

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