2012-11-24 98 views
2

我有設計用於用戶認證的gem。 基本上,我想在本地重寫Devise gem中的registrations_controller.rb。在創業板代碼:如何覆蓋寶石控制器的動作Ruby on Rails?

class Devise::RegistrationsController < DeviseController 
    ... 
    def update 
     ...(need to override) 
    end 
end 

我想如果選擇在edit_form特定屬性以用戶重定向到其他頁面。

回答

2

我會建議不要重寫該方法。相反,在配置文件編輯之後,請看Wiki page關於自定義重定向。它說明重寫此方法:

def after_update_path_for(resource) 
    user_path(resource) 
end 

你可以返回基於您的屬性不同的路徑,因此,例如

def after_update_path_for(resource) 
    resource.foo? ? foo_path : bar_path 
end 
+0

感謝它的工作原理。我還發現這個討論http://stackoverflow.com/questions/3546289/override-devise-registrations-controller,剛剛在routes.rb中添加了devise_for:users,controllers:{registrations:「registrations」},我可以覆蓋它 –