基于子域的活动管理员隐藏菜单

Active Admin hide menu based in subdomain

有没有基于子域隐藏菜单的方法?

我试图在 ApplicationController 中获取请求中的子域并将其存储为全局变量以在资源中使用,但没有成功。

下面是示例

require 'domainatrix'
url = Domainatrix.parse("#{request.host}") #=> test.example.com, will change based on request
subdomain = url.subdomain           # => "test.example"
if subdomain == 'test.example'
   // Your code staff like hiding menu
elsif subdomain == 'test1.example'
   // Your code staff like hiding menu
 // more ...
else
  // Show menu
end

我认为会有帮助

您可以在您的控制器中使用 request.subdomains,其中 return 当前请求子域的数组 subdomain docs 了解更多信息

documentation 有一个如何执行此操作的示例。

根据您提供的信息,这可能会解决您的问题:

ActiveAdmin.register Custom1 do
  menu parent: "basic_entities", if: proc { request.subdomain == "foo" }
end