Ruby 如何在Sinatra设置cookie

Ruby 如何在Sinatra设置cookie,ruby,sinatra,Ruby,Sinatra,我正在使用Sinatra和Ruby开发一个web应用程序。我需要设置一个可以从所有子域访问的cookie。我最初的代码是: @language = 'en-US' cookies[:USER_LANGUAGE] = @language 这产生了预期的效果(例如,将cookie“USER_LANGUAGE”设置为“en-US” 但是,并非所有子域都可以访问它。在查看和其他类似问题后,我尝试了以下方法: @language = 'en-US' cookies[:USER_LANGUAGE] = {

我正在使用Sinatra和Ruby开发一个web应用程序。我需要设置一个可以从所有子域访问的cookie。我最初的代码是:

@language = 'en-US'
cookies[:USER_LANGUAGE] = @language
这产生了预期的效果(例如,将cookie“USER_LANGUAGE”设置为“en-US”

但是,并非所有子域都可以访问它。在查看和其他类似问题后,我尝试了以下方法:

@language = 'en-US'
cookies[:USER_LANGUAGE] = {
  :value => @language,
  :domain => '.example.com'
}
当我检查cookie数据时,它被设置为完全错误的。cookie的值是括号内的所有内容,并且域仍然是
example.com
(而不是
.example.com

以下是产生的价值:


%7B%3Avalue%3D%3E%22en-US%22%2C+%3Adomain%3D%3E%22.example.com%22%7D

如果您想从所有子域访问所有cookie,可以为应用程序设置cookie选项:

set :cookie_options, :domain => '.example.com'
如果只在一个cookie上需要它,您可以这样做(而不是使用
cookies
对象):


如果希望从所有子域访问所有cookie,可以为应用程序设置cookie选项:

set :cookie_options, :domain => '.example.com'
如果只在一个cookie上需要它,您可以这样做(而不是使用
cookies
对象):


谢谢。使用
response
方法非常有效。谢谢。使用
response
方法非常有效。