2011-03-03 52 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