通常我有:
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"