Ruby on rails 具有嵌套资源的命名空间Rails 3.2.8
我试图将Rails应用程序组织成两个名称空间,它们提供相同的资源,但具有不同的控制器和视图。类似于下面的cenario: routes.rbRuby 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]
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
文件夹内,我将提供多个资源。@DerekWillianStavisresources
接受:module=>“behaves”
选项。您还可以使用scope:module=>“behives”do。。。结束
嵌套资源的包装器。我认为:模块不能与名称空间一起工作,但它可以。谢谢!