无效的表单提交会清除 Rails 中的会话 4

Invalid form submission clears session in Rails 4

我在 Rails 中使用会话自动填写表格的前半部分 4. 客户第一次提交表格(包含他们的详细信息和产品详细信息)时,存储客户详细信息进入一个会话。在后续表格(附加订单)上,客户的详细信息将从会话中提取,并且只需要产品详细信息。

但是,如果提交的表单无效(即表单为空但包含必填字段),则在提交失败后生成新表单时,不再从会话中提取客户详细信息。

经过调查,会话本身似乎没有被清除,就好像我导航到另一个 url,然后返回到表单,客户详细信息再次被填充。这可能与我在失败时如何生成新表格有关吗?我的控制器方法如下所示:

(为简洁起见减少)

def new
  @order = Order.new
  @current_customer = Customer.find_by_id(session[:current_customer])
  if @current_customer
    @order.customer = @current_customer
  @order.build_customer
  end
end

def create
  @order = Order.new(order_params)
  @current_customer = Customer.find_by_id(session[:current_customer])
  if current_customer
    @order.customer = current_customer
  end
  if @order.save
    # Submit Success
    session[:current_customer] = @order.customer.id
    redirect_to thankyou_path(@order)
  else
    # If submission fails
    render :new
  end
end

谢谢

是的,您似乎在“创建”操作的几个地方删除了“@”:

if current_customer
  @order.customer = current_customer
end

应该是:

if @current_customer
  @order.customer = @current_customer
end