2013-12-17 3 views
1

ActiveAdmin을 사용하여 사용자 지정 양식을 만드는 데 필요한 지침을 찾고 있습니다. 이것은 일반적인 양식이 아니지만 실제로 JavaScript가 필요합니다. 그러나, 나는 지금 ActiveAdmin에 익숙하지 않다.사용자 지정 양식 작업을위한 ActiveAdmin 지침 (사용자 지정 작업?)

제품 목록을 수집 할 양식이 있습니다. 목록에 제품을 추가 할 때마다 수량 및 고유 가격에 따라 주문의 소계를 다시 계산해야합니다. 이런 식으로, 내가 정기적으로 Formtastic을 사용하고 제품을 추가

:

  • 내가 때마다 하위 합계를 계산하는 방법 :

    f.inputs "Product List" do 
        f.has_many :product_lists do |detail| 
        detail.input :good_id, :as => :select, 
            :collection => Good.accessible_by(current_ability, :read), 
            :input_html => { class: 'chosen-select' }, 
            :include_blank => true 
        detail.input :quantity, :input_html => { :value => 1 } 
        end 
    end 
    

    을하지만, 나는 여러 질문에 건너 온 목록에 새 제품을 추가합니까? custom collection action을 사용해야합니까? 나는 전체 프로세스를 처리하기 위해 내부의 Backbone App을 고려하고 있었다.

  • 사용자 지정 작업을 사용하는 대신 더 좋은 방법이 있습니까?
  • 새 양식에 대해서만 사용자 지정 작업을 사용하는 좋은 방법이 있습니까? 나는 새 것을 만들 수 있었지만 그 양식을 제어 할 수 없었습니다.
  • 양식 패널을보다 잘 제어하려면 어떻게해야합니까? 나는 양식 블록 :(내부에 패널을 추가 할 수 없습니다
+0

여러 질문이있는 경우 - 스택 오버플로에 대해 별도의 질문을하면 사람들이 모든 질문에 답변했는지 여부를 알 수 있으므로 훨씬 더 좋습니다. 그들을 분해하고 따로 따로 질문하십시오. –

답변

1

마스터 지점에서> = 1.0.0.pre를 사용하는 경우.

  • 당신이 has_many을 포장 할 수 있어야한다 f.inputs 블록의 내부 블록 당신은 그들이 패널에 있어야합니다./후이 일대 형태의 추가/제거하기 전에
  • 이 에 대한 콜백가
  • . 당신은 다시 계산을 위해 이들에 후크 할 수있을 것 (에 제거시 최소). 추가 정보는 migh 에 대한 변경 리스너를 추가하여 재 계산을 트리거해야합니다. 해당 리스너를 페이지로드 에 추가하거나 새 항목을 추가 한 후에 추가 할 수 있습니다.

항목을 추가 할 때 서버 쪽 또는 클라이언트 쪽에서 합계가 다시 계산됩니까? 서버 측에서는 양식이 제출 된 후 합계가 업데이트되어야하며 해당 논리는 아마도 모델에 속해야합니다. AA has-many는 폼에 필드를 추가합니다. 필드는 차례대로 제출되고 커밋됩니다. 새 중첩 된 필드 집합을 추가해도 전체 양식이 제출 될 때까지 서버에서 아무 것도 변경되지 않습니다. 커밋하지 않고 업데이트해야하는 경우 ajax 요청 및 응답을 처리해야하지만 기본 동작을 사용하고 json 형식을 다시 요청하거나 사용자 지정 javascript 템플릿을 만들 수 있어야합니다.

+0

조쉬, 답변 해 주셔서 감사합니다. 자바 스크립트를 통해 커밋하지 않고 다시 계산하려는 경우 항목을 보낼 때마다 어떻게 합계를 계산할 수 있습니까? 내 말은, 항목이 추가 될 때 (JavaScript 레벨) 또는 어떻게 특별한 리스너가 있는가? – demogar

+1

그것은 합계에 추가해야하는 값을 설정하는 방법에 따라 다릅니다. 일반적으로 그 값을 가질 입력에'change' 리스너를 추가 할 수 있습니다. 그리고 다시 실행하고 다시 합계 할 수 있습니다. –

+0

안녕하세요 Josh. 다시 한번 감사드립니다. 그것은 합리적으로 들린다.잘못된 경우 흐름을 수정하십시오. 이전에 제공 한 코드를 사용하여 항목을 추가하기 위해 formtastic/AA를 사용할 수 있습니다. 그런 다음 컨테이너에 리스너를 등록해야하므로 항목을 추가 할 때마다 Ajax 호출이 트리거되고 양식의 항목 및 수량에 대한 가격을 찾은 다음 JavaScript를 통해 합계를 계산합니다. – demogar