2

わかりました、これは ActiveAdmin ではトリッキーになると思います。

特定の顧客向けに作成された請求書がある場合、ポップアップ警告を発行する必要があります (おそらく jQuery を使用します)。請求書フォームに顧客用の選択メニューがあれば簡単ですが、それは私の設定ではありません。代わりに、次のように動作します。

Shipment has_one Invoice
Shipment belongs_to Customer
(the New Shipment form has a select menu for customer)

Invoice belongs_to Shipment

新しい請求書フォームには、出荷の選択メニューがあります。I doiのインスタンスが含まれている場合、請求書がどの顧客に属しているかを調べるため。invoicei.shipment.customer

# this is a snippet of my New Invoice form
form do |f|
f.inputs "Shipment Details" do      
  f.input :shipment_id, :label => "Shipment", :as => :select, :collection => Shipment.find(:all, :order => "file_number", :select => "id, file_number").map{|v| [v.file_number, v.id] }
  f.input :issued_at, :label => "Date", :as => :datepicker
  f.input :accounting_month, :label => "Accounting month", :as => :datepicker
end

新しい請求書フォーム: 出荷の選択メニューから出荷が属する顧客を取得するにはどうすればよいですか?

たとえば、ユーザーは出荷番号 1231 を選択します。出荷が customer_id 5 に属する場合、jQuery アラートを表示します。

(ActiveAdminにjavascriptファイルを含める方法はすでに知っています:Active Admin:Javascriptを含む

4

1 に答える 1

0

できること: 出荷選択リストのコレクションに、「現在の」請求書が関連付けられている顧客を表示するようにします。したがって、コレクションの場合、次のように Customer モデルに参加できます。

f.input :shipment_id, :label => "Shipment", :as => :select, 
        :collection => 
          Shipment.
              joins(:customer).
              order('shipments.file_number').
              select("shipments.id, shipments.file_number || ' ' ||  customers.your_beautiful_customer_attribute as concatted").
              map{|v| [v.concatted, v.id] }

それが役に立てば幸い。

于 2012-12-07T15:18:42.337 に答える