无效的表单提交会清除 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
我在 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