2014-05-16 291 views
1

我正在尋找rake routes與我的嵌套資源的index路徑不匹配的原因。嵌套資源的Rails路由索引

這裏是我的代碼:

namespace :api do 
    resources :photos do 
    resource :comments 
    end 
end 

下面是命令的結果:rake routes | grep comment

  batch_action_admin_user_comments POST  /admin/user_comments/batch_action(.:format)   admin/user_comments#batch_action 
         admin_user_comments GET  /admin/user_comments(.:format)       admin/user_comments#index 
              POST  /admin/user_comments(.:format)       admin/user_comments#create 
        new_admin_user_comment GET  /admin/user_comments/new(.:format)      admin/user_comments#new 
        edit_admin_user_comment GET  /admin/user_comments/:id/edit(.:format)    admin/user_comments#edit 
         admin_user_comment GET  /admin/user_comments/:id(.:format)      admin/user_comments#show 
              PATCH  /admin/user_comments/:id(.:format)      admin/user_comments#update 
              PUT  /admin/user_comments/:id(.:format)      admin/user_comments#update 
              DELETE  /admin/user_comments/:id(.:format)      admin/user_comments#destroy 
          admin_comments GET  /admin/comments(.:format)        admin/comments#index 
              POST  /admin/comments(.:format)        admin/comments#create 
           admin_comment GET  /admin/comments/:id(.:format)       admin/comments#show 
         api_photo_comments POST  /api/photos/:photo_id/comments(.:format)    api/comments#create 
        new_api_photo_comments GET  /api/photos/:photo_id/comments/new(.:format)   api/comments#new 
        edit_api_photo_comments GET  /api/photos/:photo_id/comments/edit(.:format)   api/comments#edit 
              GET  /api/photos/:photo_id/comments(.:format)    api/comments#show 
              PATCH  /api/photos/:photo_id/comments(.:format)    api/comments#update 
              PUT  /api/photos/:photo_id/comments(.:format)    api/comments#update 
              DELETE  /api/photos/:photo_id/comments(.:format)    api/comments#destroy 

我嘗試添加only: [:create, :index]comments資源,但只有create路線是可見的。

根據有關nested-resources的文檔,我不明白髮生了什麼。

謝謝你的幫助。

回答

1

這是因爲你使用的是singular resourceresource :comments

從文檔:

有時候,你有資源的客戶端總是仰望沒有 引用的ID。例如,您希望/ profile始終顯示當前登錄用戶的配置文件 。在這種情況下,你可以使用 單一資源/配置文件(而不是/profile/:id)映射到 表演動作

你需要使用標準resources方法來得到這個工作(resource省略index行動):

#config/routes.rb 
namespace :api do 
    resources :photos do 
    resources :comments 
    end 
end 
+0

這正是我發佈這個答案後幾分鐘後發現(見下文)。感謝您的快速回復。 – BriceB

+0

Np,希望我的解釋能給你一些背景知識,爲什麼*問題發生了 –

0

我的錯誤。我的資源中缺少「S」。

namespace :api do 
    resources :photos do 
    resources :comments 
    end 
end 

現在,它的工作。