在控制器中存储不同的表单发布数据

时间:2014-10-29 12:46:58

标签: ruby-on-rails

我在每个页面都有一些表格,每页四页。

如果第1页中的表单1提交它将从控制器调用一个API,然后它将转到第2页,同样的事情将再次发生在页面2中,依此类推。

最后,我希望在表单4提交中提供页面摘要。

如果表单1的值无效,它将重定向到带有预填充提交值的form1页面,依此类推。

我们在提交表单4后将记录存储在db中。

API(fedex)返回大量带有哈希的数据,需要保持最后提交的表格。

在会话中存储表单数据会很好吗?

请告知

1 个答案:

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