2012-08-22 3 views
2

Devise (2.1)는 사용자 정의 컨트롤러를 사용하기 전까지 내 사용자 정의보기를 사용하고있었습니다. 이제 내 사용자 정의보기가 무시됩니다.세션 컨트롤러 무시 사용자 정의보기를 사용하지 못하도록합니다.

는 이전에 모든 것이 잘 작동 : /app/views/subscribers/session/new.html.erb

설정 경로

devise_for :subscribers 
/config/routes.rb에서 :

사용자 정의보기를 추가 /config/devise.rb

# ==> Scopes configuration 
# Turn scoped views on. Before rendering "sessions/new", it will first check for 
# "users/sessions/new". It's turned off by default because it's slower if you 
# are using only default views. 
config.scoped_views = true 

에서 사용자 정의보기를 사용하도록 고안 텔 나는 일단

devise_for :subscribers, :controllers => { 
    :sessions => "subscriber_sessions" 
    } 

:

그럼 내가 대신 기본이 새로운 컨트롤러를 사용하기 위해 고안에게 /app/controllers/subscriber_session_controller.rb

class SubscriberSessionsController < Devise::SessionsController 

    before_filter :isInIframe 

    private 

     def isInIframe 
      @hide_navbar = session[:in_iframe] 
     end 

end 

그리고 수정 /config/routes.rb로 SubscriberSessionsController 사용자 정의 추가 내 서버를 다시 시작하면 Devise가이 컨트롤러를 사용하지만 사용자 정의보기를 무시합니다.

답변

2

자주 올 경우로, 질문을 게시 한 지 10 분 후 나는 그것을 깨뜨 렸습니다.

고안 뷰를 발견되지 않은 이유

는 그렇게 더 이상 views/subscribers/sessions하지만 views/subscribers/subscriber_sessions에보고 된 고안하지 subscriber_sessions.rb를 불렀다 다른 folder.My 교체 컨트롤러에서 찾고이었다.

가 내 가입자 경로를 변경 :

난 다음에이 문제를 해결 단지 세션 내 subscriber_sessions 컨트롤러 명칭 변경

devise_for :subscribers, :controllers => { 
    :sessions => "subscribers/sessions" 
    } 

과 가입자로 이동 그래서 새 이름 & 위치는 폴더 : app/controllers/subscribers/sessions_controller.rb

또한 새로운 sessions_controller.rb 파일이 다음과 같이 보이도록 클래스에 네임 스페이스를 추가해야했습니다. "

class Subscribers::SessionsController < Devise::SessionsController 

    before_filter :isInIframe 

    private 

     def isInIframe 
      @hide_navbar = session[:in_iframe] 
     end 

end 
+0

레일 4 및 개발자 3.5의 경우에도 여전히 템플릿 경로가 클래스 이름과 일치해야합니다. 정확한 답을 수락해야합니다. – Barry

관련 문제