如何将 Sinatra cookie 值保持为整数

How to keep a Sinatra cookie value as an integer

我使用整数设置 cookie

cookies[:which_link] ||= 0

好像是从整型转成字符串,因为没什么怨言。我做了一个 cookies[:which_link].class 它返回了 string.

我需要在我的应用程序中做这样的事情-

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

但行不通,显然,to_i也不是补救措施。在我必须考虑使用机架选项之一之前,有什么解决方法吗?

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

如果我理解您的需要,我认为 to_i 会起作用,您只需要稍微重写一下您的语句。请参阅以下示例:

require 'sinatra'
require 'sinatra/cookies'

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

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

您不能添加一个字符串和一个 Fixnum,但您可以将 String 转换为一个 Fixnum,然后将其加 1。然后只需将该 cookie 的值设置为新的 Fixnum,正如您所指出的那样,它是有效的。