2011-11-07 18 views
5

En mis Rails 3.1 aplicación, tengo un modelo llamado "Niño"rieles ruta no trabajo utilizando recursos: Modelo

En mi archivo routes.rb, tengo la línea:

resources :children 

Aquí está todo el texto routes.rb:

root :to => "pages#home" 

    resources :children 

Aquí está los resultados de las rutas de rastrillo completo (tenga en cuenta que la mayoría de las rutas están relacionadas con ActiveAdmin):

    children GET  /children(.:format)      {:action=>"index", :controller=>"children"} 
          POST  /children(.:format)      {:action=>"create", :controller=>"children"} 
       new_child GET  /children/new(.:format)     {:action=>"new", :controller=>"children"} 
       edit_child GET  /children/:id/edit(.:format)    {:action=>"edit", :controller=>"children"} 
        child GET  /children/:id(.:format)     {:action=>"show", :controller=>"children"} 
          PUT  /children/:id(.:format)     {:action=>"update", :controller=>"children"} 
          DELETE  /children/:id(.:format)     {:action=>"destroy", :controller=>"children"} 

Cuando corro "rutas rastrillo" Veo esta línea en los resultados:

children GET /children(.:format) {:action=>"index", :controller=>"children"} 

Este es el código en mi ChildrenController:

 def index 
     @children = Child.all 

     @base_class = "children-index" 
     @title = "Your Children" 

     respond_to do |format| 
      format.html # children/index.html.erb 
      format.json { render :json => @children } 
     end 
    end 

    def show 
     @child = Child.find(params[:id]) 

     @base_class = "child-show" 
     @title = child_name(@child) 

     respond_to do |format| 
      format.html # children/show.html.erb 
      format.json { render :json => @child } 
     end 
    end 

Cuando visito la url "/ niños "me sale este error:

No route matches {:action=>"show", :controller=>"children"} 

Aquí está la traza completa:

Started GET "/children" for 127.0.0.1 at 2011-11-07 13:06:24 -0600 
    Processing by ChildrenController#index as HTML 
    Child Load (0.8ms) SELECT `children`.* FROM `children` 
Rendered children/index.html.erb within layouts/application (65.0ms) 
Completed 500 Internal Server Error in 166ms 

ActionView::Template::Error (No route matches {:action=>"show", :controller=>"children"}): 
    1: <h1><%= title %></h1> 
    2: <ul> 
    3: <%= @children.each do |child| %> 
    4:  <li><%= link_to child.child_name(child), child_path(@child) %></li> 
    5: <% end %> 
    6: </ul> 
    app/views/children/index.html.erb:4:in `block in _app_views_children_index_html_erb__674498165009231817_70298485459960' 
    app/views/children/index.html.erb:3:in `each' 
    app/views/children/index.html.erb:3:in `_app_views_children_index_html_erb__674498165009231817_70298485459960' 
    app/controllers/children_controller.rb:9:in `index' 

Rendered /.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.5ms) 

¿Por qué "/ children" está intentando ejecutar la acción "mostrar" y por qué la acción de mostrar actúa como si la ruta no estuviera allí? Todos mis otros modelos han funcionado bien hasta ahora usando la instrucción "resource: model".

+0

Se puede publicar su archivo de rutas enteras? Puede haber algo que interfiera –

+0

¿se puede proporcionar un fragmento de código donde se muestra link_to show? – ck3g

+0

¿Puedes editar tu pregunta para agregar la salida de 'rake routes'? –

Respuesta

5

en la salida del servidor tenemos esto: Processing by ChildrenController#index as HTML que confirma que la ruta es correcta.

pero dentro de su plantilla está utilizando una ruta que el servidor no puede encontrar.

ActionView :: :: Plantilla de error (No hay coincidencias ruta {: acción => "Mostrar",: controller => "niños"}):

1: <h1><%= title %></h1> 
2: <ul> 
3: <%= @children.each do |child| %> 
4:  <li><%= link_to child.child_name(child), child_path(@child) %></li> 
5: <% end %> 
6: </ul> 

más precisamente, en la línea 4 que recibieron una problema, probablemente aquí: child_path(@child)

¿está utilizando algún ID personalizado para sus modelos (anulando el método to_param)?


sólo para que quede claro, esto no es un error de ruta, es un error de plantilla

+0

Ah, lo entiendo. Soy un poco novato en Rails para conocer cada lugar donde buscar, pero toda esta pregunta solo me dio una ruta para la solución de problemas en el futuro. Creo que puedo averiguar qué hacer desde aquí. – wrburgess

+1

no se preocupe, cuando está aprendiendo está bien cometer errores. –

Cuestiones relacionadas