Rest en relacion anidada

Hola,

Estaba con un ejemplo sobre REST con relacioneas anidadas bastante
sencillo en principio pero que no consigo hacer funcionar :frowning: me
lanza el error
undefined method `documents_path’

les comento como tengo el código
##routes.rb

#map.resources :schemes, :has_many => :documents
map.resources :schemes do |document|
document.resources :documents
end

schemes_controller.rb

def index; @schemes = Scheme.find( :all ); end

index.erb

<% for scheme in @schemes %>

<%=h scheme.name %> <%= link_to "add documents", documents_path (scheme) %> <%= link_to 'Destroy', scheme_path(scheme), :confirm => 'Are you sure?', :method => :delete %> <% end %>

si ejecuto un >> puts ActionController::Routing::Routes.routes
Las rutas parece que salen todas correctamente.


GET /schemes/:scheme_id/documents/
{:action=>“index”, :controller=>“documents”}
GET /schemes/:scheme_id/documents.:format/
{:action=>“index”, :controller=>“documents”}
POST /schemes/:scheme_id/documents/
{:action=>“create”, :controller=>“documents”}
POST /schemes/:scheme_id/documents.:format/
{:action=>“create”, :controller=>“documents”}
GET /schemes/:scheme_id/documents/new/
{:action=>“new”, :controller=>“documents”}

Me parece que esta todo correcto, pero no consigo ver donde puede
estar el fallo por ningún lado.

Gracias por la ayuda.
Un saludo.

alarkspur wrote:

Estaba con un ejemplo sobre REST con relacioneas anidadas bastante
sencillo en principio pero que no consigo hacer funcionar :frowning: me
lanza el error
undefined method `documents_path’

Intenta con :

new_document_path(scheme)

Espero te sirva.
Saludos

Jaime Mora R.

Gracias, pero con todos los metodos me lanza el mismo error :frowning:
undefined method … …

el caso es que si lo pongo sin anidar en el fichero routes.rb
funcionan bien los metodos standar document_path, new_document_path
etc… pero claro no es dependiente de scheme

map.resources :schemes
map.resources :documents

#map.resources :schemes, :has_many => :documents
#map.resources :schemes do |document|

document.resources :documents

#end

No se me ocurre que puede estar mal.

alarkspur wrote:

Gracias, pero con todos los metodos me lanza el mismo error :frowning:
undefined method … …

Cuál es el mensaje de error cuando están anidados ?

Además agrega el código que tienes en la vista.

Te recomiendo para mayor claridad en tu código definas en routes :

map.resources :schemes do |scheme|
scheme.resources :documents
end

Saludos

Jaime Mora R.

Cuál es el mensaje de error cuando están anidados ?
undefined method `new_document_path’ for #ActionView::Base:0x14dc7e4

Además agrega el código que tienes en la vista.

<% for scheme in @schemes %>

<%=h scheme.name %> <%= link_to "add documents", new_document_path(scheme) %> <%#= link_to "add documents", documents_path(scheme) %> # tambien da error undefined method `documents_path'
 <td><%= link_to 'Show', scheme_path(scheme) %></td>
 <td><%= link_to 'Edit', edit_scheme_path(scheme) %></td>
 <td><%= link_to 'Destroy', scheme_path(scheme), :confirm => 'Are

you sure?’, :method => :delete %>

<% end %>

Te recomiendo para mayor claridad en tu código definas en routes :
map.resources :schemes do |scheme|
scheme.resources :documents
end

Lo tengo tal cual recomiendas.

alarkspur wrote:

Cuál es el mensaje de error cuando están anidados ?
undefined method `new_document_path’ for #ActionView::Base:0x14dc7e4

En ActionController::Routing, la prioridad está basada en el orden de la
creación, por lo tanto prueba colocando arriba la configuración del
recurso :

ActionController::Routing::Routes.draw do |map|

map.resources :schemes do |scheme|
scheme.resources :documents
end

Demás configuraciones …

end

On 8/29/07, Jaime Mora R. [email protected]
wrote:

Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Si estas ejecutando Edge Rails puedes utilizar “rake routes” para ver
las rutas que Rails va a reconocer. Si estás en un Rails más antiguo
http://errtheblog.com/post/38 tiene una tarea que te imprime las
rutas que tu archivo de rutas genera.

Suerte.

Daniel R. Troitiño wrote:

On 8/29/07, Jaime Mora R. [email protected]
wrote:

Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Si estas ejecutando Edge Rails puedes utilizar “rake routes” para ver
las rutas que Rails va a reconocer. Si está³ en un Rails má³ antiguo
http://errtheblog.com/post/38 tiene una tarea que te imprime las
rutas que tu archivo de rutas genera.

Suerte.

Gracias por la información Daniel, el “rake” es cómo una de esas navajas
suizas, con la gran diferencia que se le siguen metiendo navajas por el
mismo costo :slight_smile:

Saludos