如何将 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,正如您所指出的那样,它是有效的。
我使用整数设置 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,正如您所指出的那样,它是有效的。