2011-10-25 126 views
2

注册,登录等后我如何设计执行功能我试图在我的应用程序控制器中放置这样的功能。设计注册功能

class ApplicationController < ActionController::Base 
    private 
    def after_sign_up_path_for(resource_or_scope) 
    execute stuff 
    end 
end 

随着我的路线是这样

devise_for :users do 
    get "https://stackoverflow.com/users/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session 
end 

这似乎并没有做任何事情。我也试图使一个会话控制器,像这样

class SessionsController < Devise::SessionsController 
    functions 
end 

随着我的路线是这样

devise_for :users, :controllers => {:sessions => 'devise/sessions'} do 
    get "https://stackoverflow.com/users/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session 
end 

这似乎并不做任何事情为好,有什么我失踪作出响应设计。 (我初步建立起色器件使用本教程) https://github.com/fortuity/rails3-subdomain-devise/wiki/Tutorial-(Walkthrough

+0

你能否提供更多关于你想要做什么以及它失败的细节? –

回答

7

您可以创建自己的sessions_controllerDevise::SessionsController继承和覆盖您想自定义操作。例如,在,你可以做一个用户登录后执行一些动作:

class SessionsController < Devise::SessionsController 
    def create 
    super 
    perform_custom_stuff 
    end 
end 

如果调用super是不够的,你可以复制目前执行的Devise::SessionsController#create在你的控制器。然后,您可以完全掌控发生的情况,并可以根据您的具体需求进行定制。这可能不是最漂亮的解决方案,但可能是必要的(至少让你继续)。

+0

我试过了,它对我的​​自定义内容没有反应,就像我说的redirect_to'www.google.ca',它不会那样做(以及其他东西) – Kevin

+0

特别是我想要渲染json:resource_name。 to_json,:callback => params [:callback],在注册时获取JSONP数组。它的失败方式是,只要我在修改会话时进行登录或注册,它就根本不会做任何事情(它只是登录并进入主页面,并且表现得好像我没有做出任何修改) – Kevin

+0

凯文在你的路线中告诉设计使用它的会话控制器,而不是你的。遵循@Mike Mazur的建议改变你的路线,它应该像冠军一样工作。 – janders223

0

我只是想提一下,after_sign_up_path_for和类似的方法只是为了返回一个路径。我不认为依靠这些副作用方法是一个好主意。