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 回答