2011-03-03 23 views
8

Estoy teniendo un problema bastante extraño con una de mis aplicaciones de rieles. Creo que probablemente estoy haciendo algo realmente tonto que simplemente no he podido identificar. Mi problema es que, parece que me falta la mitad de mis rutas de índice.Rails 3 - ¿Falta de rutas de índice?

Por ejemplo, si mi controlador es "Foos" para un modelo foo, voy a tener la:

foos POST /foos(.:format)  {:action=>"create", :controller=>"foos"} 

Pero ninguna opción GET, que por lo general sería como:

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

Abajo Le mostraré mi código real, para ayudarme a recuperar las rutas de índice que faltan.

routes.rb:

resource :announcements, :controller => "announcements" do 
    resources :comments 
    member do 
     post 'vote' 
    end 
    end 

rutas para la parte de los anuncios:

announcements POST /announcements(.:format)          {:action=>"create", :controller=>"announcements"} 
     new_announcements GET /announcements/new(.:format)         {:action=>"new", :controller=>"announcements"} 
     edit_announcements GET /announcements/edit(.:format)        {:action=>"edit", :controller=>"announcements"} 
          GET /announcements(.:format)          {:action=>"show", :controller=>"announcements"} 
          PUT /announcements(.:format)          {:action=>"update", :controller=>"announcements"} 
          DELETE /announcements(.:format)          {:action=>"destroy", :controller=>"announcements"} 

Como se puede ver, no hay get/índice. En mi controlador, tengo el método del índice define simplemente ...

def index 
    @announcements = Announcement.all 

    respond_to do |format| 
     format.html 
     format.xml { render :xml => @announcements } 
    end 
    end 

Realmente no entiendo por qué no tengo este camino índice. Está sucediendo en varios otros controladores también. Cualquier ayuda sería apreciada.

Editar: En la consola, app.announcements_path devuelve un error de método faltante, además de los otros que tienen rutas de índice faltantes.

Respuesta

32

Esto se debe a que está utilizando la versión singularizada de resources (resource). No hay una ruta de acción index generada para estos. Debe cambiar esto para que sea la versión plural y eliminar :controller de la línea también.

+0

Gracias a todos, sabía que era algo tonto lo que hice. Lo aprecio ~ – Kombo

+2

Guau, también me lo perdí ... ¡Gracias! –