Rails - 当路由存在时 API 命名空间的路由错误

Rails - Routing error for API namespace when route exists

我的 API 中有一条通往 "spaces" 资源的路线:

namespace :api, :path => "", :constraints => {:subdomain => "api"} do
  namespace :v1 do
    resources :spaces
  end
end

这对应于在 /controllers/api/v1/SpacesController.rb

处找到的控制器
class API::V1::SpacesController < ApplicationController
  ...    
end

每当我尝试访问位于 api 的页面时。[BASE URL]/v1/spaces 我得到

No route matches [GET] "/v1/spaces"

知道为什么吗? 注意:我在命名空间中使用 API 的适当变形器代替 Api。

您应该使用子域访问路由。例如,如果您通常在本地主机端口 3000 中打开站点,那么访问 http://localhost:3000/v1/spaces 将不起作用。为了使这项工作在您的本地环境中工作,您应该执行以下操作

为您的本地主机设置一个假的子域。在/etc/hosts中设置如下,

127.0.0.1api.test.com

然后,访问站点如下http://api.test.com:3000/v1/spaces

希望这有效。