Hola,
Estaba con un ejemplo sobre REST con relacioneas anidadas bastante
sencillo en principio pero que no consigo hacer funcionar
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
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 
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 
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 
Saludos