听起来“会话”是这个的完美区域:
#In this case, the :answers session variable is an array
session[:answers] = []
session[:answers][0] = "first answer"
#on the next page
session[:answers][1] = "second answer"
#on the next page after that:
session[:answers][2] = "third answer"
#what the session[:answers] array looks like
#after three questions have been answered and stored:
["first answer", "second answer", "third answer"]
要回答您的第二个问题,您还可以在会话中存储一个哈希,如下所示:
session[:answers] = {}
session[:answers]["answer1"] = "can be anything, string, symbol, another hash, array, int"
#next page:
session[:answers]["answer2"] = :answer
#what session[:answers] looks like on the third page:
{
"answer1" => "can be anything, string, symbol, another hash, array, int",
"answer2" => :answer
}
重要的是要注意session 本身只是一个在页面请求之间保留状态的哈希(此状态实际上本身存储在引擎盖下的 cookie 中,但您不必担心太多...只是不要将敏感数据存储在会话变量中,除非您在密码学和 Web 应用程序安全方面有经验...即使那样,仍然不要。)
因此,您可以在会话变量中存储任何您想要的内容:
session[:some_string] = "some string"
session[:some_hash] = { :value1 => "value 1", :value2 => 42 }
session[:some_number] = 42
session[:some_array] = ["how now brown cow", 15, "blue", :foom]