使用Rails 3,我在根名稱空間的一些模型(例如產品),而是一個管理員::模塊中的控制器(例如管理員:: ProductsController的)。不幸的是,這似乎導致具有基本功能的問題,如的form_for(@product)生產調和管理::控制器與模型::
undefined method `products_path' for #<#<Class:0x103dc4110>:0x103dc1618>
這大概是因爲routes.rb中的條目
namespace :admin do
resources :products
end
產生
admin_products GET /admin/products(.:format) {:action=>"index", :controller=>"admin/products"}
與「admin_」前綴,但form_for(@product)似乎並不理解。
我想只是申報的Rails控制器編輯產品是Admin :: ProductsController的,但兩者之間的聯繫似乎缺少。我已經試過:
- 調整在routes.rb中聲明的參數(但作爲一個總的Rails的n00b,這是完全有可能的,我錯過了正確的方式來做到這一點)
- 尋找某種形式的聲明模型類改變方式form_for推導出_path幫手
- 將模型移動到Admin命名空間;然而,這不僅在概念上是不受歡迎的,因爲模型對象在Admin ::之外的其他地方使用,並且與管理沒有任何特定的語義聯繫(僅僅是控制器中的編輯等),但是它也導致了測試和尤其是我無法解決的裝置。
什麼是構建這種系統的最Rails-y現代化的方式,我該如何解決這個問題?我覺得我一直在與框架戰鬥,所以如果有一個更好的方法來做到這一點,我願意提出建議,但即使我試圖通過將模型放在Admin ::中來解決問題,也只是開闢了新的問題...