我正在使用Rails-Api(4),我只想为命名空间路由文件设置三条路径。
在我的routes.rb文件中,我正在尝试这样做:
namespace :api do
namespace :v1 do
resources :documents, only: [:get, :create]
resource :system_status, only: [:get]
end
end
rake routes
只给我这个:
Prefix Verb URI Pattern Controller#Action
api_v1_documents POST /api/v1/documents(.:format) api/v1/documents#create
如果取消only:
,它会起作用并给我所有路线(我不想要)。
我也试过这个:
namespace :api do
namespace :v1 do
post '/documents', to: 'documents#create'
get '/documents/:id', to: 'documents#show'
get '/system_status', to: 'system_status#show'
end
end
在rake routes
中获取这个奇怪的输出:
Prefix Verb URI Pattern Controller#Action
api_v1_documents POST /api/v1/documents(.:format) api/v1/documents#create
api_v1 GET /api/v1/documents/:id(.:format) api/v1/documents#show
api_v1_system_status GET /api/v1/system_status(.:format) api/v1/system_status#show
不确定documents#show
仅提供api_v1
作为前缀的内容。
答案 0 :(得分:1)
看起来你在HTTP动词和它们相应的Rails动作之间混淆了。 :get
没有资源路由,但GET请求有两条路由,:index
和:show
将您原有的基于资源的路由更改为:
namespace :api do
namespace :v1 do
resources :documents, only: [:show, :create]
resource :system_status, only: [:show]
end
end
这应该为您提供正确的路由,以及正确的URL帮助程序前缀。