命名空间内的浅路由:path param不起作用
此路线设置
namespace :api, path: nil, except: [:new, :edit] do resources :blogs do resources :comments end end
给了我这个,没关系。
GET /blogs/:blog_id/comments(.:format) api/comments#index POST /blogs/:blog_id/comments(.:format) api/comments#create GET /blogs/:blog_id/comments/:id(.:format) api/comments#show PATCH /blogs/:blog_id/comments/:id(.:format) api/comments#update DELETE /blogs/:blog_id/comments/:id(.:format) api/comments#destroy GET /blogs(.:format) api/blogs#index POST /blogs(.:format) api/blogs#create GET /blogs/:id(.:format) api/blogs#show PATCH /blogs/:id(.:format) api/blogs#update DELETE /blogs/:id(.:format) api/blogs#destroy
但是当我在上面的设置中添加“shallow:true”时
namespace :api, path: nil, except: [:new, :edit] do resources :blogs, shallow: true do resources :comments end end
一个不需要的路径’/ api’出现了。
/api/blogs/:blog_id/comments(.:format) api/comments#index /api/blogs/:blog_id/comments(.:format) api/comments#create /api/comments/:id(.:format) api/comments#show /api/comments/:id(.:format) api/comments#update /api/comments/:id(.:format) api/comments#destroy /blogs(.:format) api/blogs#index /blogs(.:format) api/blogs#create /api/blogs/:id(.:format) api/blogs#show /api/blogs/:id(.:format) api/blogs#update /api/blogs/:id(.:format) api/blogs#destroy
这是Rails 4中的预期行为吗? 我应该分别写每个资源吗?
您需要指定shallow_path
:
namespace :api, path: nil, shallow_path: nil, except: [:new, :edit] do resources :blogs, shallow: true do resources :comments end end
给你这个:
Prefix Verb URI Pattern Controller#Action blog_comments GET /blogs/:blog_id/comments(.:format) api/comments#index POST /blogs/:blog_id/comments(.:format) api/comments#create api_comment GET /comments/:id(.:format) api/comments#show PATCH /comments/:id(.:format) api/comments#update PUT /comments/:id(.:format) api/comments#update DELETE /comments/:id(.:format) api/comments#destroy api_blogs GET /blogs(.:format) api/blogs#index POST /blogs(.:format) api/blogs#create api_blog GET /blogs/:id(.:format) api/blogs#show PATCH /blogs/:id(.:format) api/blogs#update PUT /blogs/:id(.:format) api/blogs#update DELETE /blogs/:id(.:format) api/blogs#destroy