加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 具有嵌套资源的命名空间Rails 3.2.8

发布时间:2020-12-17 03:14:57 所属栏目:百科 来源:网络整理
导读:我正在尝试将我的Rails应用程序组织到两个名称空间中,这两个名称空间提供相同的资源,但具有不同的控制器和视图.类似下面的cenario: 的routes.rb resources :beehives do resources :bees resources :honeycombsendnamespace :api do resources :beehive,onl
我正在尝试将我的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,我创建了控制器结构:

rails g controller api/beehives

rails g controller api/beehives/bees

rails g controller 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

控制器/ 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命令检查您的路由及其相关控制器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读