Rails 3 Routing - указание точного контроллера из пространства имен

У меня небольшая проблема с пространствами имен маршрутов, которые я ' я раньше не сталкивался. На самом деле это часть разработки некоторых драгоценных камней, над которыми я работаю, но я переработал проблему, чтобы она соответствовала более общей ситуации с рельсами.

В принципе, у меня есть маршрут в пространстве имен, но я хочу, чтобы он направлял на общий Контроллер (верхнего уровня).

Мой контроллер 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"}

но в идеале я бы предпочел использовать вложенное объявление (для удобства чтения) - если это вообще возможно; что я начинаю думать, что это не так.

19
задан theTRON 11 April 2011 в 00:25
поделиться