我有一个OptionsController,其中包含一个动作account.相应的视图有三种形式,分别发布到三个不同的动作update_profile,update_user和change_password.每个操作都会运行,然后应重定向回到action,再次设置视图并进行渲染.
我试图干,并创建一个after_filter进行重定向:
after_filter( :only => [:change_password, :update_profile, :update_user] ) do |controller|
controller.send(:redirect_to, :action => :account)
end
Run Code Online (Sandbox Code Playgroud)
但是,这似乎没有被调用; 相反,该行动抱怨其观点无法找到.
Template is missing
Missing template options/update_user.erb in view path app/views
Run Code Online (Sandbox Code Playgroud)
我有什么办法可以干这样做,或者我应该在三个动作的每一个中坚持redirect_to调用?
只需将redirect_to调用放入每个操作中.DRY和难以理解的魔法之间有一条细线.我觉得尝试做一些类似于after_filter或其他任何不明显破坏动作的预期行为的东西可能是太多魔术.