我有一個manager
和一個customer
控制器。 當我想列出特定經理的所有客戶時,我曾經通過經理show
採取行動(因爲這是經理特有的)。所以if
一個customer_id被發現會產生一個不同的返回值。但是,如果分支機構留給我們(有時很大)。在rails中嵌套命名空間錯誤訪問與命名空間名稱相同的模型
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(..)
就行正在工作,爲什麼我無法再訪問管理器資源?我認爲它與名稱空間的名稱有關,但即使重命名名稱空間也沒有幫助。
'經理'定義在哪裏?在'app/models/manager.rb'還是在一個子文件夾中?另外,你能否提供'manager'的類聲明? –
嘿,是的,它定義在'app/model/manager.rb'中。類聲明是什麼意思? – theDrifter
該文件的第一行通常是'class Manager <...' –