2012-09-02 110 views
3

我遇到了奇怪的錯誤。我不知道這是錯誤。不過,我從未遇到過這種奇怪的行爲。奇怪的Rails資源路由行爲

resource :watches 

使得這種奇怪的路由表:

 watches POST /watches(.:format)       watches#create 
    new_watches GET /watches/new(.:format)      watches#new 
    edit_watches GET /watches/edit(.:format)     watches#edit 
       GET /watches(.:format)       watches#show 
       PUT /watches(.:format)       watches#update 
       DELETE /watches(.:format)       watches#destroy 

正如你看到的沒有ID PARAM和混亂的行動

在同一時間:

resources :mibs 

做出正確的路線

  mibs GET /mibs(.:format)       mibs#index 
       POST /mibs(.:format)       mibs#create 
     new_mib GET /mibs/new(.:format)      mibs#new 
     edit_mib GET /mibs/:id/edit(.:format)     mibs#edit 
      mib GET /mibs/:id(.:format)      mibs#show 
       PUT /mibs/:id(.:format)      mibs#update 
       DELETE /mibs/:id(.:format)      mibs#destroy 

我認爲是可以以某種方式偏轉問題,但使用「火箭彈」,試圖取代「手錶」給予同樣的結果:

 rockets POST /rockets(.:format)       rockets#create 
    new_rockets GET /rockets/new(.:format)      rockets#new 
    edit_rockets GET /rockets/edit(.:format)     rockets#edit 
       GET /rockets(.:format)       rockets#show 
       PUT /rockets(.:format)       rockets#update 
       DELETE /rockets(.:format)       rockets#destroy 

任何東西,除了我的頭兩個資源(服務器和MIB)中,使這樣的結果。

某處可能損壞了路由緩存?

回答

5

resource表示單例資源:換句話說,您告訴Rails每個用戶只有一次監視,所以傳遞ID將毫無用處。

resources是獲取附加ID的路由的標準調用。

所以,本質上,問題是一個變形者,但對於resourceresources,不是你的路線的名稱。欲瞭解更多信息,請查看Ruby on Rails routing guide。它很好地解釋了單身人士資源和更常見的資源之間的差異。

+1

謝謝。剛剛找到了我自己。我應該睡更多:) –

+1

沒問題,容易錯過! – Veraticus