我在每个页面都有一些表格,每页四页。
如果第1页中的表单1提交它将从控制器调用一个API,然后它将转到第2页,同样的事情将再次发生在页面2中,依此类推。
最后,我希望在表单4提交中提供页面摘要。
如果表单1的值无效,它将重定向到带有预填充提交值的form1页面,依此类推。
我们在提交表单4后将记录存储在db中。
API(fedex)返回大量带有哈希的数据,需要保持最后提交的表格。
在会话中存储表单数据会很好吗?
请告知
答案 0 :(得分:2)
我认为你在谈论多步形式。 this railscast
中有详细的教程def new
session[:order_params] ||= {}
@order = Order.new(session[:order_params])
@order.current_step = session[:order_step]
end
def create
session[:order_params].deep_merge!(params[:order]) if params[:order]
@order = Order.new(session[:order_params])
@order.current_step = session[:order_step]
if @order.valid?
if params[:back_button]
@order.previous_step
elsif @order.last_step?
@order.save if @order.all_valid?
else
@order.next_step
end
session[:order_step] = @order.current_step
end
if @order.new_record?
render "new"
else
session[:order_step] = session[:order_params] = nil
flash[:notice] = "Order saved!"
redirect_to @order
end
end