Muchas veces cuando tenemos recursos anidados nos encontramos definiendo un map.resource (o una ruta) adicional para acceder al mismo recurso pero sin la anidación. Para referenciar a un miembro específico de este sin el prefijo del padre sin tener que definir otra ruta, Rails edge agrega una opción a map.resource para lograr esto.

Ejemplo:

map.resources :users, :shallow => true do |user|
  user.resources :posts
end

* GET /users/1/posts (mapea a la acción PostsController#index action como siempre)
se agrega la ruta nombrada “user_posts” como siempre.

Lo nuevo:

* GET /posts/2 (mapea a la acción PostsController#show como si no sería anidada)
Adicionalmente, se agrega también la ruta nombrada “post”.


Leave a Reply