Ruby on Rails Enrutamiento de recursos (básico)


Ejemplo

Las rutas se definen en config/routes.rb . A menudo se definen como un grupo de rutas relacionadas, utilizando los resources o resource métodos de resource .

resources :users crean las siguientes siete rutas, todas UsersController a las acciones de 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'

Nombres de las acciones se muestran después de la # en el to parámetro anterior. Los métodos con esos mismos nombres se deben definir en app/controllers/users_controller.rb siguiente manera:

class UsersController < ApplicationController
  def index
  end

  def create
  end

  # continue with all the other methods…
end

Puede limitar las acciones que se generan con only o except :

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

Puede ver todas las rutas de su aplicación en cualquier momento ejecutando:

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

Para ver solo las rutas que se asignan a un controlador en particular:

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

Puedes buscar a través de rutas usando la opción -g . Esto muestra cualquier ruta que coincida parcialmente con el nombre del método auxiliar, la ruta de la URL o el 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 

Además, al ejecutar el servidor de rails en modo de desarrollo, puede acceder a una página web que muestra todas sus rutas con un filtro de búsqueda, con prioridad de arriba a abajo, en <hostname>/rails/info/routes . Se verá así:

Ayudante Verbo HTTP Camino Controlador # Acción
Camino / Url [Match Path]
ruta_usuario OBTENER /users(.:format) índice de usuarios #
ENVIAR /users(.:format) usuarios # crear
new_user_path OBTENER /users/new(.:format) usuarios # nuevo
edit_user_path OBTENER /users/:id/edit(.:format) usuarios # editar
ruta_usuario OBTENER /users/:id(.:format) usuarios # show
PARCHE /users/:id(.:format) usuarios # actualizar
PONER /users/:id(.:format) usuarios # actualizar
BORRAR /users/:id(.:format) usuarios # destruir

Las rutas se pueden declarar disponibles solo para miembros (no para colecciones) utilizando el resource del método en lugar de los resources en routes.rb . Con resource , una ruta de index no se crea de forma predeterminada, sino solo cuando se solicita explícitamente una como esta:

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