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
4

1 に答える 1

0

これが誰かに役立つ場合に備えて、注文が存在する場合は顧客データを取得するか、存在しない場合は新しい顧客を作成するために、次のことを行いました. コントローラーの編集部分と更新部分の両方に入る必要がありました。

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

次に、顧客がすでに注文に関連付けられている場合は、ネストされたフォームが事前入力されます。

于 2013-06-23T09:37:49.103 に答える