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