Rails 3使用命名空间进行路由

Arn*_*met 5 routing routes namespaces ruby-on-rails ruby-on-rails-3

尝试访问以下URL时,出现404错误页面:

dev.mydomain.com/api

而我的routes.rb文件提到这条路线确实存在:

的routes.rb

constraints :subdomain => 'dev' do
  root :to => 'developers/main#index', :as => :developers
  namespace 'api', :as => :developers_api do
    root :to => 'developers/apidoc/main#index'
  end
end
Run Code Online (Sandbox Code Playgroud)

耙路线

         developers   /(.:format)      {:subdomain=>"dev", :controller=>"developers/main", :action=>"index"}
developers_api_root   /api(.:format)   {:subdomain=>"dev", :controller=>"api/developers/apidoc/main", :action=>"index"}
Run Code Online (Sandbox Code Playgroud)

调节器

/app/controllers/developers/apidoc/main_controller.rb

class Developers::Apidoc::MainController < Developers::BaseController
  def index
  end
end
Run Code Online (Sandbox Code Playgroud)

日志

[router]: GET dev.mydomain.com/api dyno=web.1 queue=0 wait=0ms service=14ms status=404 bytes=0
[web.1]: Started GET "/api"
[web.1]: ActionController::RoutingError (uninitialized constant Api::Developers)
Run Code Online (Sandbox Code Playgroud)

pcg*_*g79 5

我猜测问题是你的路线指向api/developers/apidoc/main但你的班级只是Developers::Apidoc::MainController.您应该不将该路由命名为api或者将Api添加到控制器的命名空间 - Api::Developers::Apidoc::MainController.