代码之家  ›  专栏  ›  技术社区  ›  matsko

Rails命名空间控制器问题

  •  0
  • matsko  · 技术社区  · 14 年前

    admin目录位于admin::namespace(/admin)中。

    当我在Admin::命名空间和普通根映射区域中创建名为Forums的控制器时,路由似乎找到了/Forums和/Admin/Forums的Admin::Forums控制器。

    So/admin/forums=>app/controllers/admin/forums\u controller.rb“ So/论坛=>app/controllers/admin/forums\u 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 回复  |  直到 14 年前
        1
  •  1
  •   Max Williams    14 年前

    为主管理名称空间调用指定两次名称前缀(基本上是随机选择一个选项)。另外,在子资源中不需要name\u 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