如何检查是否设置了哈希cookie值



通常我有:

cookies[:location] = { :value => { :city => 'foo', :country => 'bar' } } 

但是,有时不设置:country。当我这样做时:

cookies[:location][:country].present? 

要检查国家/地区是否已设置,它会返回一个错误:

[:country] is not a symbol

如果我不能这样做,我该如何检查一个国家是否设置为cookie[:location]

cookies哈希的嵌套方式与预期不同::value嵌套在:location下,:city:country嵌套在:value下。以下是一些irb输出,让你开始:

[~]$ irb
>> cookies={}
=> {}
>> cookies[:location] = { :value => { :city => 'foo', :country => 'bar' } }
=> {:value=>{:city=>"foo", :country=>"bar"}}
>> cookies[:location][:value][:country]
=> "bar"
>> cookies.to_s
=> "{:location=>{:value=>{:city=>"foo", :country=>"bar"}}}"

如果你像下面这样嵌套散列,你会得到你期望的行为:

>> cookies[:location] = { :city => 'foo', :country => 'bar' } 
=> {:city=>"foo", :country=>"bar"}
>> cookies[:location][:country]
=> "bar"

最新更新