Как проверить, установлено ли значение хеш-файла cookie? - PullRequest
2 голосов
/ 26 июня 2011

Обычно у меня есть:

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

Однако иногда :country не устанавливается. Когда я делаю:

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

чтобы проверить, была ли указана страна, возвращается ошибка:

[:country] is not a symbol

Как мне проверить, установлена ​​ли страна в cookie[:location], если я не могу сделать это таким образом?

1 Ответ

3 голосов
/ 26 июня 2011

Хэш 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...