2015-11-03 78 views
1

我有一個應用程序需要訪問者填寫表單,然後重定向到第二個頁面。客戶不希望訪問者註冊查看此頁面,只填寫表格。Ruby on Rails - 表單提交中的會話變量

我試圖做到這一點的方式是在頁面被訪問時創建一個會話變量,然後在下一頁可訪問之前檢查變量是否存在。是否有可能延遲創建會話變量,直到處理提交操作?如果是這樣的話會是什麼樣子?

另外,任何人都可以想到一個更好的方法來做到這一點?對不起,這可能是一個愚蠢的問題。

+0

你想如何處理他訪問過你的網站的用戶?1小時/ 1天/ 1年前? – BroiSatse

+0

最好我希望他們填寫表格,如果它已經超過一個小時或兩個小時。 – jpdvi

回答

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 %>