2012-04-21 35 views
1

設計2真的很棒!但是,我一直試圖讓它在登錄後重定向到用戶/:id。如何重定向到用戶/:成功設計登錄後的id - rails 3

用戶成功登錄到站點後,默認頁面爲root。但是,我希望它轉到由users_controller.rb控制的users /:id頁面。登錄後,我可以手動輸入localhost:3000/users/1進入用戶配置文件頁面,我可以訪問用戶信息,因此show controller工作正常。

的關鍵問題是我如何得到現場去爲localhost:3000 /用戶/用戶1後1個招牌

我讀了色器件維基很多次,用Google搜索了很多。最簡單的方法是通過添加application_controller.rb覆蓋色器件:

def after_sign_in_path_for(resource) 
    dashboard_path 
end 

我想我的問題是如何定義dashboard_path?我在config/routes.rb和application_controller.rb中添加什麼?

任何幫助,非常感謝!我使用的設計2.0和3.2.3軌道

回答

3

首先看到this鏈接

我告訴你,我做什麼
的routes.rb

devise_for :users,:has_many => :comments, :controllers => {:sessions => devise/sessions', :registrations => 'devise/registrations'} do  

     match '/users/:id/dashboard', :to => "users#dashboard", :as => :dashboard  

然後聲明如下放在你的助手幫手。 rb文件時使用設計關鍵字
用戶幫助

def resource_name  
    :user  
end  

def resource  
    @resource ||= User.new  
    end  

    def devise_mapping  
    @devise_mapping ||= Devise.mappings[:user]  
    end  

end    

Application_controller.rb

def after_sign_in_path_for(resource)  
    if current_user.admin?  
     stored_location_for(resource) || admin_path  
    else  
     stored_location_for(resource) || dashboard_path(current_user.id)  
    end  
    end  

我希望這會幫助你。
謝謝。

+1

感謝Urjit!有趣的是,如果我只是'添加def after_sign_in_path_for(資源)@ user =當前用戶端',它也會在登錄後重定向到users /:id。我不需要在route.rb中添加任何其他內容 – railsnoob123 2012-04-21 18:20:54