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基于当前的租户名称。有没有办法在那里放置一个基于租户变化的动态字段?
由于
答案 0 :(得分:5)
我知道这是一个老问题,但我刚刚发现你可以在当前的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
答案 1 :(得分: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
答案 2 :(得分:0)
在ActiveAdmin初始化程序设置中,这样的事情对我有用:
config.site_title = proc { I18n.t("admin.#{controller_name}.title") }