Проблема с контроллером пространства имен Rails - PullRequest
0 голосов
/ 30 июня 2010

Я разделил мое приложение rails на каталог администратора и публичный каталог.

Каталог администратора находится в пределах пространства имен Admin :: name (/admin).

Когда я создалКонтроллер называется Форумы как в пространстве имен Admin ::, так и в области обычных корневых карт. Маршрутизация, похоже, находит контроллер Admin :: Forums для / forums и /admin/forums.

So / admin / forums =>"app / controllers / admin / forums_controller.rb" So / forums => "app / controllers / admin / forums_controller.rb"

Не уверены, почему это происходит, корневые контроллеры каким-то образом наследуются между обоими контроллерами?Когда я пытаюсь выполнить код в контроллере форумов без прав администратора, ничего не происходит.

Вот мой путь:

  map.resources :forums, :only => [:index,:show] do |forum|
    forum.resources :topics, :shallow => true, :only => [:index,:show], :name_prefix => ""
  end

  map.namespace :admin, :name_prefix => "", :path_prefix => "/admin", :name_prefix => "admin_" do |admin|

    admin.resources :forums, :name_prefix => 'admin_' do |forum|
      forum.resources :topics, :name_prefix => 'admin_' do |topic|
        topic.resources :posts, :name_prefix => 'admin_'
      end
    end

   end

Есть идеи?

1 Ответ

1 голос
/ 30 июня 2010

Вы указываете name_prefix дважды для основного вызова пространства имен администратора (который по сути выберет один вариант наугад). Также вам не нужна опция name_prefix в подресурсах. Вот мое из моего приложения - некоторые из подресурсов в пространстве имен (вопросы и пользователи) также являются основными ресурсами, и здесь нет путаницы.

  map.namespace :admin do |admin| 
    admin.resources :home, :only => [:index]
    admin.resources :questions, :collection => {:edit_by_text => :get, :update_by_text => :post, :import_progress => :post}
    admin.resources :users
    admin.resources :subjects, :member => {:make_quizzes => :post}
  end
...