我有一個名爲Contributor
的模型,它也充當其他幾個模型的名稱空間,例如Contributor::Alias
和Contributor::Reassignment
。我想使用包括貢獻者ID像這樣一個URL:Rails 3:獲取名稱空間模型的ID
/contributors/1/reassignments/new
但我得到這個錯誤:
No route matches [GET] "/contributors/1/reassignments/new"
我routes.rb
文件包括:
namespace :contributor do
resources :reassignments
end
resources :contributors
我也嘗試過:
resources :contributors do
resources :reassignments
end
這導致不同的錯誤:
uninitialized constant ReassignmentsController
任何想法如何處理這個?也許我不應該使用也作爲模型的命名空間?我沒有在任何教程中看到過這一點,儘管看起來這可能是可能的。
UPDATE:
你如何處理深層嵌套的命名空間模型,如:
resources :contributors do
resources :reassignments, :module => "contributor" do
resources :approvals, :module => "reassignment"
end
end
使用這種方法,我得到的錯誤:
No route matches {:action=>"create", :controller=>"contributor/reassignment/approvals"}
我的控制器,目錄不會具有以下結構:
contributor ->
reassignment ->
approvals_controller.rb
這似乎與第一個錯誤有關,但也許它是新東西。
非常好!我對模塊路由不熟悉,但它在這裏做了訣竅。如果你有時間,我有一個相關的問題。我有另一個命名空間/模型嵌套在第二層,我有類似的路由問題。我已經更新了我的問題,如果你有機會,你會看看嗎? – nullnullnull 2013-02-28 03:01:32
您的控制器在approvals_controller.rb中如何定義?是參與者::重新分配:: ApprovalsController還是smth其他?這可能是原因。 – moonfly 2013-02-28 03:23:11
它是'Contributor :: Reassignment :: ApprovalsController'。更新後仍然沒有運氣,但我會繼續嘗試,並讓我知道如果我找到解決方案。如果您有任何其他建議,那也將不勝感激。 – nullnullnull 2013-02-28 03:30:46