我正在搜索rake routes
与我的嵌套资源的index
路径不匹配的原因。
这是我的代码:
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的文件,我不明白发生了什么。
感谢您的帮助。
答案 0 :(得分:2)
这是因为您使用的是singular resource(resource :comments
)
来自文档:
有时,您拥有一个客户端始终无需查找的资源 引用ID。例如,您希望/ profile始终显示 当前登录用户的配置文件。在这种情况下,您可以使用 一个奇异的资源来映射/配置文件(而不是
/profile/:id
) 显示行动
您需要使用标准resources
方法才能使其正常工作(resource
忽略index
操作):
#config/routes.rb
namespace :api do
resources :photos do
resources :comments
end
end
答案 1 :(得分:0)
我的错误。 A" S"在我的资源上缺失了。
namespace :api do
resources :photos do
resources :comments
end
end
现在它有效。