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から値を取得して初期値として入力画面を表示できるようになります。