Ruby on rails 具有嵌套资源的命名空间Rails 3.2.8

Ruby on rails 具有嵌套资源的命名空间Rails 3.2.8,ruby-on-rails,resources,namespaces,routes,nested,Ruby On Rails,Resources,Namespaces,Routes,Nested,我试图将Rails应用程序组织成两个名称空间,它们提供相同的资源,但具有不同的控制器和视图。类似于下面的cenario: routes.rb resources :beehives do resources :bees resources :honeycombs end namespace :api do resources :beehive, only: [:show] do resources :bees, only: [:index, :show]

我试图将Rails应用程序组织成两个名称空间,它们提供相同的资源,但具有不同的控制器和视图。类似于下面的cenario:

routes.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
class Api::BeehivesController < ApplicationController 
class Api::BeehivesController < ApplicationController 
class Api::Beehives::BeesController < ApplicationController 
使用scaffold,我创建了控制器结构:

rails g控制器api/蜂箱

rails g控制器api/蜂箱/蜜蜂

rails g控制器api/蜂箱/蜂巢

我为控制器得到的文件夹结构如下:

+ app
  + controllers
    - beehives_controller.rb
    - bees_controller.rb
    - honeycombs_controller.rb
    + api
      - beehives_controller.rb
      + beehives
        - bees_controller.rb
        - honeycombs_controller.rb
控制器/蜂箱\u控制器.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
class Api::BeehivesController < ApplicationController 
class Api::BeehivesController < ApplicationController 
class Api::Beehives::BeesController < ApplicationController 

我做错了什么?

资源:蜂巢+嵌套的
资源:蜜蜂
也不需要嵌套各自的控制器。这只是构建URL的一种方式。因此,很自然,你的应用程序要求的是
Api::BeesController
,而不是
Api::Beehives::BeesController


如果您有任何疑问,请使用
rake routes
命令检查您的路由及其相关控制器。

但是,嘿@jdoe,这破坏了我的文件夹结构。我不得不把相关的控制器放在
api
文件夹中,而不是
api/beehives
。这破坏了我的组织,因为在
api
文件夹内,我将提供多个资源。@DerekWillianStavis
resources
接受
:module=>“behaves”
选项。您还可以使用
scope:module=>“behives”do。。。结束
嵌套资源的包装器。我认为:模块不能与名称空间一起工作,但它可以。谢谢!