3

Active Adminは、次の方法でサイトのタイトルを変更できると言っています。

サイトタイトルオプションタイトルを更新したり、初期化子でオプションの画像を使用したりすることもできます。さらに、リンクを設定できます。デフォルトではリンクはなく、タイトルは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 に答える