ruby-on-rails – 具有嵌套资源的命名空间Rails 3.2.8
我正在尝试将我的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,:show] end end 使用scaffold,我创建了控制器结构:
我为控制器获得的文件夹结构听起来像这样: + app + controllers - beehives_controller.rb - bees_controller.rb - honeycombs_controller.rb + api - beehives_controller.rb + beehives - bees_controller.rb - honeycombs_controller.rb 控制器/ beehives_controller.rb class Api::BeehivesController < ApplicationController 控制器/ API / beehives_controller.rb class Api::BeehivesController < ApplicationController 控制器/ API /蜂箱/ 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 我做错了什么? 解决方法
资源:蜂窝嵌套资源:蜜蜂也不需要嵌套各自的控制器.这只是构建URL的一种方式.因此,您的应用程序自然会要求Api :: BeesController而不是Api :: Beehives :: BeesController.
如果您有任何疑问,请使用rake routes命令检查您的路由及其相关控制器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |