3

活动管理员说您可以通过这种方式更改站点标题:

站点标题选项您也可以在初始化程序中更新标题或使用可选图像。此外,您可以设置链接。默认情况下没有链接,并且标题设置为 Rails.application 类的名称。

# config/initializers/active_admin.rb
config.site_title = "My Admin Site"
config.site_title_link = "/"    ## Rails url helpers do not work here
config.site_title_image = "site_log_image.png"

此外,他们说您可以按命名空间配置标题,如下所示:

ActiveAdmin.setup do |config|
  config.site_title = "My Default Site Title"

  config.namespace :admin do |admin|
    admin.site_title = "Admin Site"
  end

  config.namespace :super_admin do |super_admin|
    super_admin.site_title = "Super Admin Site"
  end
end

我正在构建一个多租户站点,并且我希望 site_title 基于当前租户名称。有没有办法在其中放置一个根据租户而变化的动态字段?

谢谢

4

3 回答 3

8

我知道这是一个老问题,但我刚刚发现您可以在当前的 ActiveAdmin 大师中执行以下操作:

# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
  ...
  config.site_title = ->(view) {
    # Return what you like from this lambda. Runs in the scope of the controller so you can call your helpers directly.
    # For example, I do something like:
    administrator_signed_in? ? current_tennant.name : "My Site's Generic Name"
  }
  ...
end
于 2013-11-18T01:26:12.570 回答
1

我通过猴子修补 SiteTitle 类实现了这一点。

将其放入初始化程序并根据您的用户模型进行更改:

ActiveAdmin::Views::SiteTitle.class_eval do
    private
    def title_text
        if current_admin_user
            if current_admin_user.has_role? :admin
                "Site Admin"
            elsif current_admin_user.has_role? :guest
                "Site Guest"
            else
                helpers.render_or_call_method_or_proc_on(self, @namespace.site_title)
            end
        else
            helpers.render_or_call_method_or_proc_on(self, @namespace.site_title)
        end
    end
end
于 2012-10-27T14:23:16.090 回答
1

在 ActiveAdmin 初始化程序设置中,这样的东西对我有用:

  config.site_title = proc { I18n.t("admin.#{controller_name}.title") }
于 2019-09-10T14:30:14.307 回答