Ruby on Rails - 表单上的会话变量提交

时间:2015-11-03 00:25:29

标签: ruby-on-rails ruby session

我有一个应用程序,要求访问者填写表单,然后重定向到第二页。客户不希望要求访问者注册以查看此页面,仅填写表单。

我尝试这样做的方法是在访问页面时创建会话变量,然后在下一页可访问之前检查变量是否存在。是否可以延迟创建会话变量,直到处理提交操作为止?如果是这样的话会是什么样的?

此外,有人能想到更好的方法吗?对不起,这可能是一个愚蠢的问题。

1 个答案:

答案 0 :(得分:1)

会话cookie将在第一次提交后声明。

我认为第一次提交会加载controller#action,然后您将重定向到下一页。只需在那里设置会话:

#app/views/forms/1.html.erb
<%= form_tag form_1_submit_path do %>
  ...
<% end %>

这将允许您执行以下操作:

#app/controllers/forms_controller.rb
class FormsController < ApplicationController
   def form_1_submit
      session[:value] = params[:value]
      redirect_to form_2
   end
end

因此,您将session[:value]全部设置并准备好在下一个表单中使用:

#app/views/forms/2.html.erb
<%= form_tag .... do %>
   <%= text_field_tag :test, value: session[:value] %>
<% end %>