shallow root_path resource rails examples change ruby-on-rails rails-routing

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.