0

Rails の初心者として、数日前から Activeadmin の問題に取り組んでいますが、解決方法がわかりません。

さまざまな理由から、新しい Invoice オブジェクトのフォームを表示するときにオブジェクトを作成する必要があります。私はルートを持っています

“admin/orders/:order_id/invoices/new" => "admin/invoices#new"

Invoice フォームが表示されたときに注文オブジェクトを作成する必要があります。ActiveAdmin has_many を設定することで ActiveAdmin がこれを行うことができると誰かが指摘する前に、はい、これが事実であることはわかっていますが、私が持っているモデル構造を考えると、これはこのアプリには適していません (とりわけ、すべての請求書にリンクされた注文があるわけではありません)。

そこで、Invoice モデルに after_initialize を次のように設定します。

  after_initialize :set_defaults

  def set_defaults
   @ordergroup = Ordergroup.new
   @ordergroup.order = Order.find(@options[:order_id]) 
   self.ordergroup << @ordergroup
  end

シンプル。唯一の問題は、params の order_id をモデルに渡すことです。私はさまざまな初期化関数を試してきましたが、何をしても完全な災害につながるようです。誰かが私を正しい方向に向けることができますか? これが Activeadmin ではなく、新しい Invoice を直接呼び出していた場合、Invoice.new(params) を実行できましたが、Activeadmin を使用すると、フォーム機能の一部として自動的に呼び出されるようです。

どんな助けでも大歓迎です。

4

1 に答える 1