此路线设定
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中的预期行为吗? 我应该分别写每个资源吗?
答案 0 :(得分:6)
您需要指定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