2013-08-26 10 views
5

Oto złożyć moje trasyDlaczego Railsy nazywają tylko niektóre z moich tras?

Dumb::Application.routes.draw do 

    # an auto-named route 
    get '/a/b',   to: 'a#b' 

    # apparently not auto-named??? 
    get '/a/z/:something', to: 'a#z' 

end 

Oto wyjściowy rake routes

a_b GET /a/b(.:format)   a#b 
    GET /a/z/:something(.:format) a#z 

Wow, że jest do bani! Przynajmniej ze względu na konsystencję. Jeśli zmienię trasę a#z do

get '/a/z/:something', to: 'a#z', as: "a_z" 

rake routes wyświetli

a_b GET /a/b(.:format)   a#b 
a_z GET /a/z/:something(.:format) a#z 

Ok to dobrze, ale mając nazwać trasą jak to jest denerwujące.

Czy to jedyne rozwiązanie?

+0

Mogę się mylić, ale myślę, że tablica trasowania przypisuje nazwy automatycznie, gdy trasa jest wystarczająco prosta, aby mogła działać. Dodanie parametrów może wprowadzić w błąd. – tadman

Odpowiedz

2

Domyślam się, że Railsy nie mogą przypisać nazwy do trasy, ponieważ jej nie rozumieją. Zazwyczaj będziesz chciał napisać swoją trasę jako takie:

/a/:id/b/:id # instead of /a/b/:id which Rails does not understand. 

Szyny map a do kontrolera z instancji modelu z id :id i b do innego kontrolera z innym przypadku modelu z id :id.

/a/b/:id nie odnosi się do niczego pod względem konwencji Rails.

Uzyskiwanie GET /a/b nazwanego a_b było tylko zgadywaniem Railsów, ale nie może się z nich wylogować GET /a/z/:something. Co by to było? a_z_something?