我有一个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(..)
行时,为什么我不能再访问管理器资源了?我认为它与命名空间的名称有关,但即使重命名命名空间也无济于事。
答案 0 :(得分:1)
尝试
::
使用{{1}}进行前缀将访问根命名空间。