2012-07-02 1 views
2

그래, 이건 ActiveAdmin에서 까다로울 것 같아요.레일 3 및 ActiveAdmin : 양식에 연결된 레코드의 값을 얻으십시오

특정 고객을 위해 생성 된 인보이스가있는 경우 팝업 경고를 발행해야합니다 (아마 jQuery를 사용합니다). 인보이스 양식에 고객을위한 선택 메뉴가있는 경우 이것은 쉽지만 내 설치는 아닙니다. 대신, 이것이 작동하는 방식입니다.

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

Invoice belongs_to Shipment 

따라서 새 송장 양식에는 배송을위한 선택 메뉴가 있습니다. 인보이스가 속한 고객을 확인하려면 iinvoice의 인스턴스가 포함 된 경우 i.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을에서 자바 스크립트 파일을 포함하는 방법을 알고 : Active Admin: Including Javascript를)

+0

ActiveAdmin에서 선택한 기본 레이블과 다른 레이블을 사용하여 선적 선택 메뉴를 사용자 정의하는 방법을 묻고 있습니까? – sorens

답변

0

당신이 할 수있는 일 : 선적 선택 목록에 대한 컬렉션은 '현재'송장에 연결되어 고객을 표시합니다. 컬렉션과 관련하여 다음과 같이 고객 모델에 참여할 수 있습니다.

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] } 

희망이 있습니다.