2013-04-08 11 views
11

Nella mia applicazione Rails seguendo routes.rbperché nessun nome di percorso per itinerari personalizzati in Rails

resources :users 

conduce alla seguente output per il 'rake routes'

users  GET /users(.:format)     users#index 
       POST /users(.:format)     users#create 
new_user  GET /users/new(.:format)    users#new 
edit_user GET /users/:id/edit(.:format)  users#edit 
user   GET /users/:id(.:format)    users#show 
       PUT /users/:id(.:format)    users#update 
       DELETE /users/:id(.:format)    users#destroy 

& seguente in routes.rb (per il mio controller personalizzato 'casa')

match '/new_user'  =>   'home#new_user', via: [:get] 
match '/users/:id/edit' =>   'home#edit_user', via: [:get] 
match '/users/:id'  =>   'home#show_user', via: [:get] 
match '/users/:id'  =>   'home#create_user', via: [:post] 

porta all'output successivo per 'rake routes'

GET /new_user(.:format)    home#new_user 
GET /users/:id/edit(.:format)   home#edit_user 
GET /users/:id(.:format)    home#show_user 
POST /users/:id(.:format)    home#create_user 

perché non esistono nomi di percorsi per il secondo caso? come nel primo caso ('new_user', 'edit_user')

c'è un modo per avere i nomi dei percorsi per il secondo caso? come voglio usare questi nomi di percorso nelle mie viste

risposta

32

Non ci sono nomi di percorsi perché non hai specificato i nomi dei percorsi. Se stai fornendo percorsi personalizzati invece di utilizzare resources, è necessario utilizzare :as per fornire un percorso:

match '/new_user' => 'home#new_user', via: :get, as: :new_user 

Si dovrebbe anche usare appena get invece di match... via: :get:

get '/new_user' => 'home#new_user', as: :new_user 

Tuttavia, dato il vostro serie di percorsi, la soluzione migliore è continuare a utilizzare resources, ma per fornire un elenco limitato di azioni tramite :only e un controller personalizzato tramite :controller:

resources :users, only: %w(new edit show create), controller: "home" 
+2

Grazie .. questo è stato veloce, +1 :), un'altra domanda c'è qualche vantaggio di lasciar perdere 'match ... via:: get'? come hai detto sopra – Akhil

+2

La mia strada è più breve e più chiara. La domanda migliore è: c'è qualche vantaggio nell'usare 'match ... via:: get' su' get'? – meagar

+1

capito ... andrò per la tua strada – Akhil

Problemi correlati