Shallow Routes en Edge no funciona del todo bien

Hola gente,

En routes agrego lo siguiente :

map.resources :users, :shallow => true do |user|
user.resources :articles do |article|
article.resources :comments
end
end

Aqui [1] se menciona que debe generar las rutas :

articles_path #=> ‘/articles’
comments_path #=> ‘/comments’

Me estoy dando cuenta que ninguna de las rutas anteriores se generan.
Observen que estoy configurando shallow a true. Estoy utilizando Edge
clonado al dia de hoy.

[1]
http://ryandaigle.com/articles/2008/9/7/what-s-new-in-edge-rails-shallow-routes

Un saludo y gracias.

Hola, igual me salgo un poco del tema pero creo que no deberías darle
mucha importancia, estas con edge y esas cosas pasan.

Como de importante es hacerlo usando shallow? Por que no lo haces de
la manera tradicional (generando 2 niveles mejor que 3)

map.resources :users do |user|
user.resources :articles
end

map.resources :articles do |article|
article.resources :comments
end

map.resources :comments

Saludos

El 23/09/2008, a las 0:38, aprendiz basico escribió:

¿Estas seguro que tienes los controladores creados? Acabo de probarlo
y funciona bien aqui:

cd /tmp
rails testshallow
cd testshallow/rails
git clone git://github.com/rails/rails.git
cd /tmp/testshallow
script/generate resource user
script/generate resource article
script/generate resource comment

…editar routes.rb y

rake routes

…y se veen todas.

script/server

…y en el navegador

http://localhost:3000/comments
http://localhost:3000/articles
http://localhost:3000/users/articles/comments

…te da un Unknown Action (y no un Routing Error)

-christos

2008/9/23 alarkspur [email protected]

Hola, igual me salgo un poco del tema pero creo que no deberías darle mucha
importancia, estas con edge y esas cosas pasan.
Como de importante es hacerlo usando shallow? Por que no lo haces de la
manera tradicional (generando 2 niveles mejor que 3)

Hola alarkspur,

En eso tienes razón, solo que me parece muy interesante esta opción ya
que
hace más DRY el trabajo en routes.

Gracias y un saludo.

On 23 Sep 2008, at 22:59, aprendiz basico wrote:

El bug se presenta cuando utilizas :shallow => true en las nested
routes, caso distinto al que expones ya que utilizas recursos
independientes.

Claro. He quitado todas las rutas creadas por el resource generator en
routes.rb y he dejado solo:

map.resources :users, :shallow => true do |user|
user.resources :articles do |article|
article.resources :comments
end
end

…y parece que funciona. Investigaré mas.

-christos

2008/9/23 Christos Z. [email protected]

¿Estas seguro que tienes los controladores creados? Acabo de probarlo
y funciona bien aqui:

script/generate resource user
script/generate resource article
script/generate resource comment

Hola Christos,

El bug se presenta cuando utilizas :shallow => true en las nested
routes,
caso distinto al que expones ya que utilizas recursos independientes.

Gracias y un saludo

2008/9/23 Christos Z. [email protected]

Ojalá se esté equivocando y pronto suban un commit a Edge. Me gusta
:shallow
=> true, pero siempre y cuando haga lo expuesto en el post de Ryan
Daigle.

Un saludo.

2008/9/23 aprendiz basico [email protected]

Ojalá se esté equivocando y pronto suban un commit a Edge. Me gusta
:shallow => true, pero siempre y cuando haga lo expuesto en el post de Ryan
Daigle.

Perdón quise decir, ojalá NO se esté equivocando.

Un saludo

Aha.

He leido tu primer post otra vez y ahora entiendo.

:slight_smile:

El shallow solo te da routas con id, no los indexes:

“Add support for shallow nesting of routes. [#838 state:resolved]
Adds :shallow option to resource route definition. If true, paths for
nested resources which reference a specific member (ie. those with
an :id parameter) will not use the parent path prefix or name prefix.”

El autor del articulo [1] se esta equivocando cuando dice que te va a
dar articles_path.

Las rutas que se crean son:

             edit_comment GET    /comments/:id/

edit {:action=>“edit”, :controller=>“comments”}
formatted_edit_comment GET /comments/:id/
edit.:format {:action=>“edit”, :controller=>“comments”}
comment GET /
comments/:id
{:action=>“show”, :controller=>“comments”}
formatted_comment GET /
comments/:id.:format
{:action=>“show”, :controller=>“comments”}
PUT /
comments/:id
{:action=>“update”, :controller=>“comments”}
PUT /
comments/:id.:format
{:action=>“update”, :controller=>“comments”}
DELETE /
comments/:id
{:action=>“destroy”, :controller=>“comments”}
DELETE /
comments/:id.:format
{:action=>“destroy”, :controller=>“comments”}

-christos