У меня небольшая проблема с пространствами имен маршрутов, которые я ' я раньше не сталкивался. На самом деле это часть разработки некоторых драгоценных камней, над которыми я работаю, но я переработал проблему, чтобы она соответствовала более общей ситуации с рельсами.
В принципе, у меня есть маршрут в пространстве имен, но я хочу, чтобы он направлял на общий Контроллер (верхнего уровня).
Мой контроллер PublishController
, который обрабатывает публикацию множества различных типов моделей, которые все соответствуют одному интерфейсу, но могут находиться в разных пространствах имен. Мои маршруты выглядят следующим образом:
# config/routes.rb
namespace :manage do
resources :projects do
get 'publish' => 'publish#create'
get 'unpublish' => 'publish#destroy'
end
end
Проблема в том, что при этом создаются следующие маршруты:
manage_project_publish GET /manage/projects/:project_id/publish(.:format) {:controller=>"manage/publish", :action=>"create"}
manage_project_unpublish GET /manage/projects/:project_id/unpublish(.:format) {:controller=>"manage/publish", :action=>"destroy"}
Какие маршруты мне нужны, только не сопоставление с правильным контроллером. Я пробовал все, что мог придумать, попытаться разрешить контроллеру не переносить пространство имен, но я в тупике.
Я знаю, что мог сделать следующее:
get 'manage/features/:feature_id/publish' => "publish#create", :as => "manage_project_publish"
который производит :
manage_project_publish GET /manage/projects/:project_id/publish(.:format) {:controller=>"publish", :action=>"create"}
но в идеале я бы предпочел использовать вложенное объявление (для удобства чтения) - если это вообще возможно; что я начинаю думать, что это не так.