我已将rails应用程序拆分为管理目录和公共目录。
admin目录位于Admin :: namespace(/ admin)。
当我在Admin :: namespace和普通根映射区域中创建一个名为Forums的控制器时,路由似乎找到了/ forums和/ admin / forums的Admin :: Forums控制器。
所以/ admin / forums => “应用程序/控制器/管理/ forums_controller.rb” 所以/ forums => “应用程序/控制器/管理/ 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 :(得分: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