2013-08-26 11 views
5

Ecco il mio file percorsiPerché Rails nomina solo alcuni dei miei percorsi?

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 

Ecco uscita del rake routes

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

Wow che palle! Almeno per coerenza. Se cambio il percorso a#z a

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

rake routes visualizzerà

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

Ok questo è un bene, ma avendo dare un nome al percorso del genere è fastidioso.

Questa è l'unica soluzione?

+0

Potrei sbagliarmi, ma penso che la tabella di routing assegni automaticamente i nomi solo quando il percorso è abbastanza semplice per farlo funzionare. L'aggiunta di parametri potrebbe confonderlo. – tadman

risposta

2

La mia ipotesi è che Rails non possa assegnare un nome al percorso perché non lo capisce. Di solito, si vuole scrivere il percorso in quanto tale:

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

Rails mappe a a un controller con un'istanza modello con id :id e b a un altro controller con un'altra istanza modello con id :id.

/a/b/:id non fa riferimento a nulla in termini di convenzione Rails.

Ottenere GET /a/b con nome a_b era solo un'ipotesi Rails fatto, ma non può funzionare GET /a/z/:something. Cosa sarebbe? a_z_something?

Problemi correlati