rails中的嵌套命名空间错误访问与命名空间同名的模型

时间:2016-09-10 14:28:47

标签: ruby-on-rails ruby-on-rails-4

我有一个manager和一个customer控制器。 当我想列出特定经理的所有客户时,我曾经通过经理show操作(因为它特定于经理)。所以发现if customer_id会生成不同的返回值。但是,如果分支,我们(有时很大)就离开了。

Class Api::V1::ManagerController < ApiBaseController
   def show 
     if params.key?[:customer_id]
         ....
     else
         ....
     end
     render ..., status: 200
   end

为了改进我的设计,我为子资源引入了额外的名称空间。因此,要列出一个特定经理的所有客户,我在经理名称空间下有一个客户控制器。所有针对与客户资源相关的经理的操作都在进行中。

 Class Api::V1::Manager::CustomerController < Api:ApiBaseController
  def show
      Manager.find(params[:id] ...
      ...
     render ..., status: 200
 end

routes.rb条目现在看起来像这样

get 'manager/:manager_id/customer' => 'manager/customer#show'

在测试新设置时,我现在收到此错误

"error":"uninitialized constant Api::V1::Manager::CustomerController::Manager

当我用其他资源替换Manager.find(..)行时,为什么我不能再访问管理器资源了?我认为它与命名空间的名称有关,但即使重命名命名空间也无济于事。

1 个答案:

答案 0 :(得分:1)

尝试

::

使用{{1}}进行前缀将访问根命名空间。