我想在Rails中存储一个数组,在解码时出现了错误。
我使用cookies[:test] = Array.new
进行存储
当我尝试解码时,
@test = ActiveSupport::JSON.decode(cookies[:test])
我遇到了错误。
怎样才能正确地实现我所要的功能呢?
我想在Rails中存储一个数组,在解码时出现了错误。
我使用cookies[:test] = Array.new
进行存储
当我尝试解码时,
@test = ActiveSupport::JSON.decode(cookies[:test])
我遇到了错误。
怎样才能正确地实现我所要的功能呢?
JSON.generate(array)
,因为这是Cookies文档中第二个例子中使用的方法。# Cookie values are String based. Other data types need to be serialized.
cookies[:lat_lon] = JSON.generate([47.68, -122.37])
来源: http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html
当您想要读取它时,只需使用JSON.parse cookies [:lat_lon]
,它将为您提供一个数组。
当写入cookie时,我通常会将数组转换为字符串。
def save_options(options)
cookies[:options] = (options.class == Array) ? options.join(',') : ''
end
当读取 cookie 时,我会将其转换回数组。
def options_array
cookies[:options] ? cookies[:options].split(",") : []
end
session
而不是cookies
。您不必对其进行解码,rails会为您处理。创建会话的方法与您已经使用的方式相同:session[:test] = Array.new
当你需要时,像平常一样访问它
session[:test]
# => []
ShowDetails,TRUE
)。当然,如果您愿意,您也可以将分隔符更改为更安全的内容。 - Stenerson