Используя Rails 3, у меня есть несколько моделей (например, Product) в корневом пространстве имен, но контроллеры (например, Admin :: ProductsController) в модуле Admin ::.К сожалению, это, кажется, вызывает проблемы с основными функциями, такими как form_for (@product), производящий
undefined method `products_path' for #<#<Class:0x103dc4110>:0x103dc1618>
Это, вероятно, потому что записи rout.rb
namespace :admin do
resources :products
end
производят
admin_products GET /admin/products(.:format) {:action=>"index", :controller=>"admin/products"}
с префиксом "admin_", но form_for (@product), похоже, этого не понимает.
Я хотел бы просто объявить Rails, что контроллером для редактирования Products является Admin:: ProductsController, но эта связь между ними отсутствует.Я пробовал:
- Настройка параметров в декларации rout.rb (но, будучи полным Rails n00b, вполне возможно, что я упустил правильный способ сделать это)
- Поискдля некоторой формы объявления в классе модели изменить способ form_for выводит помощника _path
- Перемещение моделей в пространство имен Admin;однако, это не только концептуально нежелательно, поскольку объекты модели используются где-либо за пределами Admin :: и не имеют какой-либо конкретной семантической привязки к администрированию (только редактирование и т. д. в контроллере), но это также вызывает проблемы с тестированием иприборы, в частности, которые я не смог решить.
Какой самый современный Rails-y способ структурировать такую систему и как я могу решить эту проблему?Я чувствую, что боролся с фреймворком, поэтому, если есть общий лучший способ сделать это, я открыт для предложений, но даже моя попытка полностью обойти проблему, поместив модели в Admin :: просто открыла новые проблемы...