2011-03-18 4 views
1

나는 간단한 문제가있다. 알아낼 수 없다.서브 도메인 레일 3

저는 서브 도메인을 사용하는 레일 3 앱이 있습니다.

많은 사용자가 있습니다. 사용자가 로그인하면 회사 하위 도메인으로 리디렉션하고 싶습니다.

저는 Ryan Bates 스크린 캐스트를 사용하여 하위 도메인을 작동 시켰습니다. http://railscasts.com/episodes/221-subdomains-in-rails-3

내 user_sessions_controller에 있습니다. 사용자가이 링크에 기록 될 때이 URL

http://lvh.me:3000/?subdomain=lizz 

에 하위 도메인 lizz와 회사의 사용자를 전송 끝

def create 
@user_session = UserSession.new(params[:user_session]) 

if @user_session.save 
    @firm = current_user.firm 
    flash[:notice] = "Successfully logged in." 
    redirect_to root_url(:subdomain => @firm.subdomain) 
else 
    render :action => 'new' 
end 

당신을 수행

<%= link_to current_firm.subdomain, root_url(:subdomain => current_firm.subdomain) %> 

를 작동 컨트롤러에서 하위 도메인으로 리디렉션하는 방법에 대한 아이디어가 있습니까?

답변

3

당신이 문제가 있다고 생각하는 URL은 root_url입니다. Railscasts를 철저히 따라 간다면 도우미 방법 url_for을 수정 한 것은 아마도 명명 된 URL에 사용되지 않았을 것입니다.

대신 url_for을 사용해보세요.

편집

URL은/lib 디렉토리/action_dispatch/라우팅/route_set.rb actionpack-3.0.x 버전에서 생성하고 사용자 정의 url_for 방법을 사용하지 않습니다 이름입니다. 그러나 :host 매개 변수를 지원하므로 다음과 같이 작성해야합니다.

... root_url(:host => "#{current_firm.subdomain}.domain.tld") ... 
+0

이것은 쿠키를 전달하지 않습니다. 따라서 사용자는 다시 로그인해야합니다. session_store.rb에서 (: domain => : all) 옵션없이 하위 도메인으로 쿠키를 전송할 수 있습니까? 내가 이것을 사용하면 사용자는 모든 회사에 접근 할 수있다. –

+0

나는 이것에 대해 조금 전에 들여다 보았다. 나는 그것이 가능하다고 생각하지 않는다. 소장은 여러 범위를 처리 할 수 ​​있습니다. 즉, 회사 범위와 같은 것을 정의 할 수 있습니다. 그러나 Devise 범위는 관리자 범위와 일치하며 작동 솔루션이 아닐 것이라고 생각합니다. – HakonB