如何在保持DRY的同时将多个操作重定向到单个操作?

Dan*_*uis 2 ruby-on-rails dry

我有一个OptionsController,其中包含一个动作account.相应的视图有三种形式,分别发布到三个不同的动作update_profile,update_userchange_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调用?

Ben*_*hes 8

只需将redirect_to调用放入每个操作中.DRY和难以理解的魔法之间有一条细线.我觉得尝试做一些类似于after_filter或其他任何不明显破坏动作的预期行为的东西可能是太多魔术.