2012-06-22 126 views
2

主動聯繫說,你可以改變網站的標題是這樣的:主動管理動態網站標題

網站標題選項 您可以更新的標題或在初始化也使用一個可選的圖像。另外你可以設置鏈接。默認情況下沒有鏈接,標題設置爲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是基於當前的租戶名稱。有沒有一種方法可以將動態字段置於基於租戶的變化中?

謝謝

+1

初始器不能動態更新(Rails在配置更改時需要重新啓動)。你考慮過JavaScript嗎? – Alex

+0

是否有可能以某種方式在ApplicationController中設置它?我絕對認爲我們需要一些方法來改變基於用戶數據或標題的標題... –

回答

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 
+0

這種方法不會改變它爲所有用戶登錄?或者是初始化器僅適用於當前用戶會話? (fyi,我是RoR的新手) 例如,如果我可以將title_text作爲「current_user.tenant」或其他東西返回,那將會很好嗎? –

3

我知道這是一個老問題,但我剛剛發現,你可以做以下的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