バージョン管理された API パスを持つ必要があるモバイル API のルートを設定しようとしています。/controllers/api/v1/mobile/にある別のコントローラーAuthControllerに実装されているモバイル認証を機能させることができました。
使用例:
myapp.com/api/v1/mobile/auth
しかし今、既存のリソース コントローラーを追加の API ルートとしてこのパス パターンに登録したいと考えています。具体的: これは/controllers/tracker/tasks_controller.rbにあるTasksControllerになります。そこで、routes-definition にモバイル ルートを追加しました。
# 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を指そうとすることが問題であると思います。