2011-03-03 81 views
8

我有我的Rails应用的一个很奇怪的问题。我想我可能在做一些非常愚蠢的事情,而我却无法辨认。我的问题是,我似乎错过了我的一半索引路径。Rails 3 - 缺少索引路径?

例如,如果我的控制器是 “FOOS” 的模式FOO,我将有:

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

但没有GET选项,这通常会是如下:

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

以下我会告诉你我的实际代码,以帮助我恢复缺少的索引路线。

的routes.rb:

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

路线的公布部分:

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"} 

正如你可以看到有没有get /索引。在我的控制,我所定义的简单指数法...

def index 
    @announcements = Announcement.all 

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

我真的不明白,为什么我没有这个索引路径。它也发生在其他几个控制器上。任何帮助,将不胜感激。

编辑:在控制台中,app.announcements_path返回一个方法缺失的错误,除了有缺失索引路径等。

回答

32

这是因为你使用的resourcesresource)的单一化的版本。没有为这些生成的index行动路线。您应该更改这个是多元化的版本,并从线:controller了。

+0

由于一吨,我知道这是愚蠢的事情我做。欣赏它〜 – Kombo 2011-03-03 06:51:12

+2

哇,错过了那一个......谢谢! – 2013-11-26 20:25:18