Railsアプリケーションを、同じリソースを提供するが、コントローラーとビューが異なる2つの名前空間に編成しようとしています。次の風景のようなもの:
ルート.rb
resources :beehives do
resources :bees
resources :honeycombs
end
namespace :api do
resources :beehive, only: [:show] do
resources :bees, only: [:index, :show]
resources :honeycombs, only: [:index, :show]
end
end
足場を使用して、コントローラー構造を作成しました。
rails g controller api / beehives
rails g controller api / beehives / bees
railsgコントローラーapi/beehives / honeycombs
そして、コントローラー用に取得したフォルダー構造は次のようになります。
+ app
+ controllers
- beehives_controller.rb
- bees_controller.rb
- honeycombs_controller.rb
+ api
- beehives_controller.rb
+ beehives
- bees_controller.rb
- honeycombs_controller.rb
controllers / beehives_controller.rb
class Api::BeehivesController < ApplicationController
controllers / api / beehives_controller.rb
class Api::BeehivesController < ApplicationController
controllers / api / beehives / bees_controller.rb
class Api::Beehives::BeesController < ApplicationController
まあ、それは簡単でした。このコンテキストでは、/beehives/1
はルート名前空間(Webアプリケーション用)と/api/beehives/1
「api」名前空間(RESTful Webサービスの提供用)にルーティングします。それは本当にうまくいっています。/api/beehives/1/bees
問題は、何らかの理由でアクセスしようとすると、名前空間がネストされたリソースに適用されず、Railsがこのエラーを吐き出すことです。
uninitialized constant Api::BeesController
私が間違っているのは何ですか?