2017-09-10 2 views
0

Ich versuche root zu routen, um anmelden Pfad unter einer subdomain Einschränkung.Rails Routing mit Devise und Subdomain Constraint

Mein config/routes.rb in etwa so aussehen

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 

Ich erhalte den Fehler Could not find devise mapping for path "/".

Irgendwelche Vorschläge, wie ich den Weg zu Root-Pfad in einer Sub-Domain mit devise Umfang?

Dank

+0

Ist es so funktioniert: 'root an: 'ersinnen/sessions # new', Einschränkungen: {subdomain: 'admin'} ' –

+1

Vielen Dank für Ihre Nachricht. Ich müsste es immer noch in den Block "devise_scope" setzen, um die Standard-Routen zu überschreiben. Um das zu tun, habe ich es in einen "constraint" Block gesetzt. Irgendwie kann ich von dort aus nicht auf Devise-Controller zugreifen. –

Antwort

1

eine Authentifizierung Um eine volle Strecke begrenzen verwenden, um die devise authenticated Methode:

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' ist wirklich nur eine Entwicklungsversion von' scope', die Routen in den Gerätepfad einbindet. 'devise_scope: users' würde Pfade in'/users' bereitstellen. – max

+0

Danke für die Antwort. Wir können nur routen, um Controller aus einem "devise_scope" zu entwickeln. Ich habe versucht, mit 'unauthenticated' route zu root, aber es zeigt immer noch die gleiche Fehlermeldung. Gibt es eine Möglichkeit, Routen zu "devise_scope" zu machen und Standardwerte zu überschreiben, während auch root zu: 'devise/sessions # new'' spezifiziert wird? –