0

我已經將我的rails應用程序分割爲一個管理目錄和一個公共目錄。Rails命名空間控制器問題

admin目錄位於Admin :: namespace(/ admin)中。

當我在Admin ::命名空間和普通根映射區域中創建了一個名爲Forums的控制器時,路由似乎找到/ forums和/ admin/forums的Admin :: Forums控制器。

所以/管理/論壇=> 「應用/控制器/管理/ forums_controller.rb」 所以/論壇=> 「應用/控制器/管理/ 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 

任何想法?

+0

它是從你的其他問題有點重複:http://stackoverflow.com/questions/3146659/rails-2-namespace-and-shallow-routes-issue – shingara 2010-06-30 07:59:28

回答

1

您爲主管理員命名空間調用指定了兩次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