kei-p3’s blog

kei-pによる技術共有と思考整理

ActiveAdminでnewした時にparamsに対応した初期値を入力させる

Railsの管理画面の作成をサポートするプラグインとして、ActiveAdminというものがあります。

rails generate active_admin:resourceするだけで、基本的な一覧や編集画面、削除ボタンなどが作成されます。
さらにCSVでのデータの読み込みといった特殊なアクションも追加できるため、なかなかの拡張性があり重宝してます。

今回は、newしたときに初期値を入力させるといった方法を紹介します。

どういったときに使えるかというと、

  • Fugaの管理画面からあるリンクをクリックするとHogeの値を入力済みの作成画面へ遷移させる

といったケースに使えます。

実装方法

ActiveAdmin.register
  form do |f|
    @hoge = f.object
    if @hoge.new_record?
      @hoge[:fuga_id] ||= params[:fuga]
    end

    f.inputs Hoge do
      f.input :fuga
    end
    f.actions
  end
end

new_record?でnewかeditを判別できるので、今回はnewのときだけに対応するので、if文で分岐しています。
あとは、遷移させたい画面にadmin_hoge_path(fuga: #{fuga.id})といった感じのリンクを設定することで、 paramsから値を取得して初期値として入力画面を表示できるようになります。