Rails-Api(4):命名空间路由,仅:操作

时间:2014-11-03 20:57:25

标签: ruby-on-rails ruby-on-rails-4 rails-routing rails-api

我正在使用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作为前缀的内容。

1 个答案:

答案 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帮助程序前缀。