Ruby on Rails Routing delle risorse (base)

Esempio

Le rotte sono definite in config/routes.rb . Sono spesso definiti come un gruppo di percorsi correlati, utilizzando le resources o i metodi di resource .

resources :users creano i seguenti sette percorsi, tutti UsersController alle azioni di UsersController :

get       '/users',          to: 'users#index'
post      '/users',          to: 'users#create'
get       '/users/new',      to: 'users#new'
get       '/users/:id/edit', to: 'users#edit'
get       '/users/:id',      to: 'users#show'
patch/put '/users/:id',      to: 'users#update'
delete    '/users/:id',      to: 'users#destroy'

I nomi delle azioni sono visualizzati dopo il # nel parametro to sopra. I metodi con gli stessi nomi devono essere definiti in app/controllers/users_controller.rb come segue:

class UsersController < ApplicationController
  def index
  end

  def create
  end

  # continue with all the other methods…
end

È possibile limitare le azioni generate only con o except :

resources :users, only:   [:show]
resources :users, except: [:show, :index]

Puoi visualizzare tutti i percorsi della tua applicazione in qualsiasi momento eseguendo:

5.0
$ rake routes
5.0
$ rake routes
# OR
$ rails 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
          PATCH  /users/:id(.:format)      users#update
          PUT    /users/:id(.:format)      users#update
          DELETE /users/:id(.:format)      users#destroy

Per vedere solo le rotte che si associano a un controller particolare:

5.0
$ rake routes -c static_pages
static_pages_home    GET    /static_pages/home(.:format)    static_pages#home
static_pages_help    GET    /static_pages/help(.:format)    static_pages#help
5.0
$ rake routes -c static_pages
static_pages_home    GET    /static_pages/home(.:format)    static_pages#home
static_pages_help    GET    /static_pages/help(.:format)    static_pages#help

# OR

$ rails routes -c static_pages
static_pages_home    GET    /static_pages/home(.:format)    static_pages#home
static_pages_help    GET    /static_pages/help(.:format)    static_pages#help

Puoi cercare attraverso i percorsi usando l'opzione -g . Mostra tutte le route che corrispondono parzialmente al nome del metodo helper, al percorso URL o al verbo HTTP:

5.0
$ rake routes -g new_user     # Matches helper method
$ rake routes -g POST         # Matches HTTP Verb POST 
5.0
$ rake routes -g new_user     # Matches helper method
$ rake routes -g POST         # Matches HTTP Verb POST 
# OR
$ rails routes -g new_user    # Matches helper method
$ rails routes -g POST        # Matches HTTP Verb POST 

Inoltre, quando si esegue il server di rails in modalità di sviluppo, è possibile accedere a una pagina Web che mostra tutti i percorsi con un filtro di ricerca, abbinato in priorità da cima a fondo, in <hostname>/rails/info/routes . Sembrerà così:

aiutante Verbale HTTP Sentiero Controller # Azione
Percorso / Url [Path Match]
users_path OTTENERE /users(.:format) Indice utenti #
INVIARE /users(.:format) utenti creano #
new_user_path OTTENERE /users/new(.:format) utenti # nuova
edit_user_path OTTENERE /users/:id/edit(.:format) gli utenti # modifica
user_path OTTENERE /users/:id(.:format) gli utenti # show
PATCH /users/:id(.:format) gli utenti # aggiornamento
METTERE /users/:id(.:format) gli utenti # aggiornamento
ELIMINA /users/:id(.:format) utenti # distruggono

Le route possono essere dichiarate disponibili solo per i membri (non per le raccolte) utilizzando la resource metodo anziché le resources in routes.rb . Con la resource , una route index non viene creata per impostazione predefinita, ma solo quando ne viene richiesta esplicitamente una come questa:

resource :orders, only: [:index, :create, :show]