2013-06-10 1 views
0

주문 절차의 일부인 customer의 중첩 양식이 있습니다. 고객 정보를 입력하고 배달 정보를 입력합니다. 사용자가 전달할 때 자동으로 고객을 만듭니다. 그 다음 단계로 돌아 간다면 컨트롤러가 @order.build_customer을 사용함에 따라 다시 고객 세부 정보를 입력해야합니다.사용자가 원래 양식으로 돌아 가면 중첩 된 양식을 작성합니다.

중첩 된 고객 필드를 해당 페이지로 되돌릴 때 가장 먼저 채우는 방법은 무엇입니까? 사용자가 '수정'을 클릭하면 고객 ID를 매개 변수로 전달해야합니까? 또는 find_or_create으로 시도 하시겠습니까?

코드 예제 환영 - 아직 학습 중입니다 ... 감사합니다! OrdersController가에서

단계

def step_two 
    @user = User.find(params[:user_id]) 
    @order = Order.find(params[:order_id]) 
    @order.build_customer 
    end 

step_two.html.haml에서 중첩 된 형태의 코드가

이 사람을 도움이 그냥 경우
= form_for @order, :url => user_order_step_two_path(@user, @order), do |f| 

    =f.fields_for :customer do |builder| 
     =builder.label :name, "Contact name:" 
     =builder.text_field :name 
     =builder.label :email, "Email:" 
     =builder.text_field :email 

    = f.label :recipient_name, "Recipients name:" 
    = f.text_field :recipient_name 
    = f.label :recipient_address_1, "Address:" 
    = f.text_field :recipient_address_1 

답변

0

, 내가 주문하는 경우 고객 데이터를 끌어 다음을 수행 결국 그렇지 않은 경우 새 고객을 만듭니다. 컨트롤러의 편집 및 업데이트 부분에 모두 들어가야합니다.

if @order.customer_id? 
    @customer = Customer.find(@order.customer_id) 
else 
    @order.build_customer 
end 

고객이 이미 주문과 연결되어 있으면 중첩 된 양식이 미리 채워집니다.