如何将Sinatra cookie值保持为整数

时间:2017-12-02 01:41:24

标签: ruby sinatra

我使用整数

设置cookie
cookies[:which_link] ||= 0

似乎将它从整数转换为字符串,因为没有抱怨。我做了一个cookies [:which_link] .class,然后它回来了。

我需要在我的应用程序中执行类似的操作 -

cookies[:which_link] -= 1 if params[:pages] == "previous"

但是不起作用,显然,to_i也不是一种补救措施。在我必须考虑使用其中一个Rack选项之前,有任何变通方法吗?

在常规Ruby哈希中,我输入一个整数,作为一个值,它保持不变并显示Integer类。

1 个答案:

答案 0 :(得分:1)

如果我理解你需要什么,我认为to_i会起作用,你只需稍微重写一下你的陈述。请参阅以下示例:

require 'sinatra'
require 'sinatra/cookies'

get '/' do
  cookies[:test] ||= 0
  cookies[:test] = cookies[:test].to_i + 1

  "test: #{cookies[:test]}"
end

您无法添加String和Fixnum,但可以将String转换为Fixnum,然后将其添加1。然后只需将该cookie的值设置为新的Fixnum,正如您所指出的那样,它可以正常工作。