ruby-on-rails - root_path - routes rails examples
¿Cuál es la diferencia entre: nuevo,: colección y: rutas de miembros? (3)
La diferencia es la URL generada.
Adivinemos tres recursos:
map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }
La primera ruta creará:
/users/rss
Sin nada entre el nombre del controlador y el nombre de la acción. No necesitamos ningún otro parámetro para obtener la lista de fuentes RSS del usuario.
El segundo creará la acción "perfil" como miembro del objeto. Así que tendremos:
/users/1/profile
El "1" es to_param
del usuario. Necesitamos la identificación de un usuario para mostrar un perfil.
El tercero creará la acción "borrador" como miembro de la nueva acción. Así que tendremos:
/users/new/draft
La acción "borrador" muestra un borrador del usuario antes de aceptar su creación.
Entonces esa es la diferencia entre: colección,: miembro y: nuevo. Cada uno de ellos crea diferentes rutas, cada una con su propio propósito.
He leído la documentation , pero aún no estoy seguro de entender todo.
Especialmente por qué hay un :new
parámetro. Por lo que yo entiendo, podría ser reemplazado por el parámetro :collection
.
Entonces, ¿cuál es la diferencia entre esos tres tipos de rutas?
La explicación de Damiens es correcta en su mayoría, excepto en la sección sobre: nuevo
Lea la guía de enrutamiento de Ruby on Rails en http://guides.rubyonrails.org/routing.html Explica el enrutamiento desde adentro hacia afuera y luego de vuelta. La Sección 3.11.3 (Agregar nuevas rutas) describe qué: hace nuevo, y es muy diferente a: miembro y: colección.
Básicamente, map.resources: photos,: new => {: upload =>: post} creará / photos / upload usando el verbo POST HTTP.
:member
crea una ruta con el patrón /:controller/:id/:your_method
:collection
crea una ruta con el patrón /:controller/:your_method
:new
crea path con el patrón /:controller/:your_method/new
(tenga en cuenta que el último elemento de la ruta, es decir, new
es constante)
New
difiere de la Collection
principalmente en la capa ideológica. Así es como los gurús de REST ven la creación del "sub-recurso" REST dentro del recurso más grande.