2012-04-21 2 views
1

Devise 2는 정말 굉장합니다! 그러나 로그인 한 후 superhard를 사용하여 users/: id로 리디렉션하려고했습니다.사용자에게 리디렉션하는 방법 :/성공적인 로그인 후 로그인 ID : 레일 3

사용자가 사이트에 로그인하면 기본 페이지는 root입니다. 그러나 users_controller.rb에 의해 제어되는 users/: id 페이지로 이동하려고합니다. 로그인 한 다음 수동으로 localhost : 3000/users/1을 입력하여 사용자 정보 페이지에 가서 사용자 정보에 액세스 할 수 있으므로 Show 컨트롤러가 정상적으로 작동합니다.

핵심 질문은 내가 사이트가 로컬 호스트로 이동 얻는 방법이다. 3000/사용자/1 사용자 후 1 개 표지판

은 내가 고안 위키 여러 번 읽고 많이 봤. 내 질문이 dashboard_path을 정의하는 방법을 추측

def after_sign_in_path_for(resource) 
    dashboard_path 
end 

을 : 가장 간단한 방법은 application_controller.rb에 추가하여 유증을 무시하는 것입니다? 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 파일을 만들 때
사용자 안녕하세요

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  

10

def resource_name  
    :user  
end  

def resource  
    @resource ||= User.new  
    end  

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

end    

은 내가 당신을 도울 것입니다 바랍니다.
감사합니다.

+1

감사합니다. 흥미롭게도, 만약 내가'def after_sign_in_path_for (resource) @ user = current user end'를 추가했다면 로그인 후에 users/: id로 리다이렉트한다. 나는 route.rb에 다른 것을 추가 할 필요가 없다. – railsnoob123

관련 문제