如何在Ruby on Rails中的一个cookie中存储多个值?

时间:2011-03-03 13:48:08

标签: ruby ruby-on-rails-3 cookies

我正在学习如何使用Ruby on Rails中的cookie。我所知道的是如何设置cookie的名称和值,但我想存储多达三个字段。所以任何提示或好的教程都将不胜感激!

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

根据定义,Cookie由单个名称/值对组成,其中两个字段都是文本。您应该使用三个单独的cookie来存储单独的值。

cookies["value_1"] = "one"
cookies["value_2"] = "two"
cookies["value_3"] = "three"

如果由于某种原因你不能或不想拥有多个cookie,你可以把不同的值与一个分隔符连接起来(在下面的例子中是~~之类的任意文字):

value_1 = "one"
value_2 = "two"
value_3 = "three"
cookies["multiple_values"] = "#{value_1}~~#{value_2}~~#{value_3}"

但是这样,您将不得不解析cookie,通过使用分隔符文本拆分cookie值来检索值。然而,有一天,正确的值将包含您的分隔符并破坏解析过程。

答案 1 :(得分:1)

在这种情况下,最好的选择是使用服务器端会话来存储三个值,并让cookie只是对该会话的引用。 在客户端,您将只有一个值(由某种UUID标识的会话),并且在服务器上,您可以在内存中拥有任意数量的值。

答案 2 :(得分:0)

您可以使用

将数组分配给rails中的cookie
cookies[:my_array] = [12, 1234]

并读取数组

cookies[:my_array]   # => [12, 1234]

http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html