0
0

More than 3 years have passed since last update.

ActiveAdmin の グローバルメニューの変更方法について軽く調べた

Posted at

はじめに

ActiveAdmin のヘッダーメニューのカスタマイズで、ラベルの変更方法について調べてみました。

ヘッダーメニューのラベルの変更方法

ActiveAdmin のドキュメント に書いてありますが、ActiveAdmin の register ブロックの中で、menu メソッドの label オプションに文字列を渡すことで設定できます。

ActiveAdmin.register User do
  menu label: 'Something'
end

I18n やモデルのメソッドも指定できる

以下のように、メソッドを渡して
メソッドの戻り値は String とします。

ActiveAdmin.register User do
  menu label: ->{ User.something_label }
end

proc で渡さないと、1回レンダリングしたあとメソッドの値を更新してくれないので注意

メソッドを渡すのに、直接渡すことができないかと考える方もいるかと思います。
戻り値が String なら、以下のように指定することは可能です。

ただ、メソッドが実行されるのは最初一度のみで、以降アプリ再起動するまでその値が保持されます。

例えば以下のような設定をしていると、

ActiveAdmin.register User do
  menu label: User.something_label
end
class User < ApplicationRecord
  def self.something_label
    "#{Time.current}"
  end
end

ラベルは一度レンダリングした時刻、例えば 2020-03-07 09:12:32 +0900 からリロードなどをしても変わらなくなります。

おわりに

ドキュメントふまえて色々実験すると勉強になりますね。一度レンダリングしたあと値を保持し続ける挙動についてはまた機会があれば調べてみたいと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0