在 RailsAdmin 中更改模型的导航标签

Change navigation label for model in RailsAdmin

如何在 rails_admin 中更改导航标签?

这里是app/models/admin.rb:

module Admin
  def self.table_name_prefix
    'admin_'
  end
end

app/models/admin/seo.rb:

class Admin::Seo < ActiveRecord::Base

end

我想将 Admin::Sea 模型的 Rails 管理导航标签更改为 "Admin"。

我在 config/locales/ru.yml 中尝试了以下方法:

activerecord:
    models:
      admin:
        one: test
        other: test1
      admin/seo:
        one: SEO - данные
        other: SEO - данные

我也试过 config/initializers/rails_admin.rb:

config.model Admin do
   label 'test1'
   label_plural 'test1'
   navigation_label 'test1'
end

在我的项目中它是这样工作的

activerecord:
  models:
    admin/seo:
      one: SEO - данные
      other: SEO - данные

而且您不需要初始化程序。
此外,它应该是 ru.yml 而不是 en.yml,因为它是俄语翻译,因此它必须仅用于俄语区域设置。

更新 1

我找到了一些答案,但我不确定它是否是最好的(但它有效)

class Admin::Seo < ActiveRecord::Base
  rails_admin do
    navigation_label I18n.t('your.translation.path.here')
  end
end

您也可以将此代码放在初始化器而不是模型中(由您决定)。

您可以看到 here 如何 rails_admin 生成这个侧边栏。
所以每个模型都应该有 navigation_label 或者默认为 t('admin.misc.navigation').

更新 2

您可以像这样在初始化期间为所有模型设置navigation_label

# config/environment.rb
...

RailsAdmin::Config.models.each do |model|
  if model.abstract_model.model_name.starts_with? 'Admin::'
    model.navigation_label I18n.t('your.translation.path.here')
  end
end

这会将所有具有 Admin 命名空间的模型和其他模型拆分到侧边栏中的两个单独的菜单中。
代码放在 environment.rb 中,因为翻译在 initializers/*.rb.

中不可用