我通常对Rails很陌生,但对MVC架构有很好的理解。
使用多步表单,我一直在将我的params保存到我的会话,在多步骤表单的末尾,从会话中提取值并保存到我的db。我想在多个步骤结束时保存数据,而不是整个旅程。
一个例子:-
表格1控制器
session[:user_details] = params表格2控制器
@orders = Order.new
@orders.first_name = session[:user_details]['first_name']
@orders.last_name = session[:user_details]['last_name']
@orders.save!在这种情况下,这种方法是最好的方法吗?还是在ruby中有一种更清晰的替代方法?
发布于 2016-12-02 13:34:40
另一种方法是使用部分更新。而不是将结帐过程看作是对一个庞大的POST请求的累积,您可以尽早创建订单,并将流程中的每一个后续步骤作为一个补丁请求来更新订单,其中包含更多的详细信息,如地址或支付细节。
另一种方法是使用关联并使用一个控制器进行CRUDing,这是一个订单中分离的部分:
POST /order
-> GET /order/1/addresses/new
POST /order/addresses
-> GET /order/1/payments/new
POST /order/payments
-> GET /order/1/confirmation发布于 2016-12-02 12:21:54
我认为这是一个很好的方法,但是当用户再次输入新表单时,您必须记住清除会话。另一种方法是隐藏“以前的表单”,并通过javascript显示“下一个表单”。实际上,以前的所有字段都存储在隐藏字段中,而不是会话中,而且您只有一个表单,您只需要隐藏给定的部分,这样用户就会认为他在下一步。在最后一步,您提交表单并像标准的一步表单一样处理它。
https://stackoverflow.com/questions/40931906
复制相似问题