2017-09-10 55 views
0

我試圖航線根制定登錄路徑下的subdomain約束路由。使用Rails的設計和子域約束

config/routes.rb是這個樣子

Rails.application.routes.draw 
    constraints subdomain: 'admin' do 
    devise_scope :admin do 
     root to: 'devise/sessions#new' 

     # here I override devise routes 
    end 
    end 

    root to: 'pages#homepage' 

    # rest of the routes 
end 

我收到錯誤Could not find devise mapping for path "/".

任何建議,我怎麼路線根路徑與色器件範圍域名?

感謝

+0

它的工作原理類似: '根:「設計/會話#新」,約束: {subdomain:'admin'}' –

+1

感謝您的跟進。我仍然需要將它放在'devise_scope'塊中,從而覆蓋默認的設計路線。要做到這一點,我已經把它放在一個「約束」塊內。不知何故,我仍然無法從那裏訪問'devise'控制器。 –

回答

1

要添加限制給路由的認證用色器件authenticated方法:

Rails.application.routes.draw 
    constraints subdomain: 'admin' do 
    authenticated :admin do 
     # the root page for authenticated users 
     root 'admin#dashboard', as: :authenticated_root 
    end 
    root to: 'devise/sessions#new' 
    end 

    # this is for no subdomain 
    root to: 'pages#homepage' 
end 
+0

'devise_scope'真的只是scope'的'有一項版本,安裝在色器件路徑路由。 'devise_scope:users'會將路徑掛載到'/ users'中。 – max

+0

感謝您的回覆。我們只能從'devise_scope'內部設計控制器。我嘗試使用'unauthenticated'來路由到根目錄,但它仍然顯示相同的錯誤消息。有沒有一種方法,我可以'devise_scope'路線,並覆蓋缺省值,同時指定'根:「設計/會話#new''? –