Wie leite ich mehrere Aktionen zu einer einzigen Aktion während DRY aufrechterhalten?
-
10-07-2019 - |
Frage
Ich habe eine OptionsController
, die eine Aktion account
enthält. Die entsprechende Ansicht hat drei Formen, die auf drei verschiedene Aktionen zu veröffentlichen, update_profile
, update_user
und change_password
. Jede Aktion läuft und dann sollte zurück zu action
umleiten, wo der Blick wieder aufgebaut und wiedergegeben.
Ich habe versucht, eine after_filter
trocken zu sein und schaffen die Umleitung zu tun:
after_filter( :only => [:change_password, :update_profile, :update_user] ) do |controller|
controller.send(:redirect_to, :action => :account)
end
Allerdings scheint dies nicht genannt werden; die Aktion eher, beklagt, dass seine Ansicht nicht gefunden werden kann.
Template is missing
Missing template options/update_user.erb in view path app/views
Gibt es eine Möglichkeit, dies in einer trockenen Art und Weise tun, oder soll ich einfach in jedem der drei Aktionen den redirect_to Anruf kleben?
Lösung
einfach den redirect_to
Anruf in jedem der Aktionen. Es gibt eine feine Linie zwischen trocken und unverständlich Magie. Ich fühle mich wie der Versuch, so etwas wie ein after_filter
oder irgendetwas anderes, das nonobviously zerschlägt das erwartete Verhalten einer Handlung zu tun, ist wahrscheinlich zu viel Magie.
Andere Tipps
Es ist mein Verständnis, dass nach dem Filter ausgeführt werden nach die Antwort an den Client gesendet wird, das heißt, nach jeder machen oder Umleitungen auftreten, weshalb Sie diesen Fehler sind zu sehen. Sie sollen Sie tun Dinge wie Protokolldaten oder Benchmark oder enge Verbindungen oder jede andere Art von Bereinigungs lassen Sie