【问题标题】:Rails Namespace Controller IssueRails 命名空间控制器问题
【发布时间】:2023-03-11 12:49:02
【问题描述】:

我已将我的 Rails 应用程序拆分为一个管理目录和一个公共目录。

admin 目录位于 Admin:: 命名空间 (/admin) 中。

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

所以 /admin/forums => "app/controllers/admin/forums_controller.rb" 所以 /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

有什么想法吗?

【问题讨论】:

标签: ruby-on-rails model-view-controller routing content-management-system namespaces


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 2014-09-27
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多