2014-06-17 5 views
12

Im usando i binari 4.1.1 e ruby ​​2.1.1 e sto avendo un problema con escogitare, vale a dire i miei percorsi..Io ho usato questo volte prima`add_route ': nome di percorso non valido, già in uso:' root '(ArgumentError)

devise_for :users 

get 'pages/index' 

# Route to Devise Login Page 
    devise_scope :user do 
    root to: "devise/sessions#new" 
    end 

# Directing the user after login 
    authenticated :user do 
    root :to => 'pages#index' 
    end 

ma ottengo l'errore

`add_route': Invalid route name, already in use: 'root' (ArgumentError) 

quando si tenta di avviare il server .. posso vedere che la radice viene utilizzato due volte, ma come ho detto sono stato in grado di farlo in passato .. C'è un modo per aggirare questo

Grazie

risposta

19

trovato questo commento utile qui su StackOverflow

Per Rails 4.0 si devono assicurarsi di avere nomi univoci per il percorso aiutanti, come radice: "cruscotto # show", come:: authenticated_root. In caso contrario, la radice autenticato e il percorso radice normale finiscono avere lo stesso nome per i loro aiutanti di percorso, che Rails 4.0 non è più permette

così ho cambiato la mia radice autenticato di helper in questo modo

# Directing the user after login 
authenticated :user do 
    root :to => 'pages#index', as: :authenticated_root 
end 
+3

Grazie. Mi ha aiutato durante il passaggio da Rails3 a Rails4! –

+0

Quindi, se vogliamo designare l'URL '/' se l'utente è loggato o no, dobbiamo creare un helper 'def percorso_root effettivo se user_signed_in? authenticated_root_path else root_path end end'? Sembra zoppo ... –