Где я могу использовать куки в Ruby on Rails - PullRequest
1 голос
/ 24 сентября 2010

Я использую инициализатор контроллера для настройки того, что мне понадобится.

def initialize
  super()
  a = cookies[:a] # EXCEPTION

end

Однако я не могу использовать куки, потому что они пустые, система еще не прочитала их из заголовка.

Та же проблема была с ASP.NET MVC, где я не мог получить доступ к файлам cookie в конструкторе, но я мог получить к ним доступ в методе Initialize ().

Как получитькуки в Rails?

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Если вы хотите настроить что-то перед каждым запросом, вы должны использовать before_filter.

class MyController << ApplicationController
  before_filter :cookie_setup

  def cookie_setup
    a = cookies[:a]
    .. whatever you want to do with 'a'
  end
end
0 голосов
/ 24 сентября 2010

В частности, cookie - это хэш, и вы добавляете пару хэш-значение ключа с синтаксисом hash[:key] = value в хеш. Таким образом, добавление ключа без присвоения значения даст вам нулевое значение, когда вы его попросите.

irb(main):006:0> cookies = {}
=> {}
irb(main):007:0> cookies[:a] = 'value'
=> "value"
irb(main):008:0> cookies.inspect
=> "{:a=>\"value\"}"
irb(main):010:0> a= cookies[:b]
=> nil
irb(main):011:0> cookies.inspect
=> "{:a=>\"value\"}
0 голосов
/ 24 сентября 2010

Раньше у меня тоже были проблемы с этим, должно работать:

cookies['a'] = 'value'
a = cookies['a']
...