【发布时间】:2012-05-04 08:02:20
【问题描述】:
我正在尝试为移动 API 设置路由,它应该具有版本化的 api-path。我已经可以让移动 Auth 工作了,它在位于 /controllers/api/v1/mobile/ 的单独控制器 AuthController 中实现。
使用示例:
myapp.com/api/v1/mobile/auth
但是现在我想将我现有的资源控制器注册到这个路径模式作为额外的 api 路由。具体:这将是位于 /controllers/tracker/tasks_controller.rb 的 TasksController。所以我在路由定义中添加了一个移动路由:
# routes.rb
namespace :tracker, path: 'timetracking' do
resources :tasks, 'jobs'
end
namespace :api do
namespace :v1 do
namespace :mobile do
resources :auth, :only => [:create, :destroy]
namespace :tracker do #added mobile route
resource :tasks, controller: 'tracker/tasks', as: :mobile_tasks
end
end
end
end
但是当我调用 myapp.com/api/v1/mobile/tracker/tasks 时,它会导致错误消息:
Routing Error
uninitialized constant Api::V1::Mobile::Tracker
我特别为这条路线添加了别名 :mobile_tasks,以避免与上面的原始任务路线发生任何冲突。任何想法,如何为这条路线正确设置控制器?
更新#1
将此路由定义为作用域而不是命名空间也不起作用。
scope "/api/v1/mobile/tracker" do
resources :tasks, controller: 'tracker/tasks', as: :mobile_tasks
end
但这一次,它甚至没有解析路由路径本身。
Routing Error
No route matches [GET] "/api/v1/mobile/tracker/tasks"
我认为这可能是个问题,我的附加 mobile-api 路由试图指向一个完全不同的命名空间 tracker。
【问题讨论】:
-
遇到了类似的问题,实际上我只需要重新启动
rails server。我想它有必要获取名称空间和所有内容中的更改。把它放在那里以防其他人最终从 Google 来到这里!
标签: ruby-on-rails ruby-on-rails-3 routes