在重定向上保留表单值

时间:2013-11-13 22:24:54

标签: ruby-on-rails forms redirect

我有一个创建新PlanEntry的表单。

在此表单的顶部,我有此链接可上传视频作为PlanEntry的一部分:

<%= link_to "Upload Video", new_video_sources_path %>

这会将用户带到另一个表单上传视频。成功后,它将返回到新的PlanEntry表单。

如果用户总是通过上传视频开始,这种方式很好,但在某些情况下,他们可能已经草拟了“标题”和“描述”之类的内容。在这些情况下,当用户在上传视频后返回表单时,这些值将丢失。

如何保留这些值?

1 个答案:

答案 0 :(得分:0)

我想通了,但是有点迂回曲折。基本上我用这个替换了上面的一行:

<%= f.submit "Upload Video", :name=>"commit", :value=>"Upload Video" %>

这是提交PlanEntry表单的第二个按钮。现在在我的控制器中,我检查提交中单击了哪个按钮。如果是“上传视频”按钮,我会将所有参数保存到会话中,然后重定向到上传视频表单。

   if params[:commit] == "Upload Video"
    session[:plan_entry] = params[:plan_entry]
    redirect_to new_video_sources_path
   else
    ...
   end

视频上传后,会重定向回新的PlanEntry表单。在我的PlanEntry#new controller中,我检查是否存在会话变量。如果是这样,我抓住它们然后清除它们。

  if session[:plan_entry].present?
    @plan_entry.assign_attributes(session[:plan_entry])
    session[:plan_entry] = nil
  end