3
respostas

Rails 5: 'request.cookies' e 'cookies' estão ambos nulos mesmo com o navegador enviando os cookies

Olá, estou usando Rails 5.1.4

Tenho esse controller:

def home
    if cookies[:_ga].blank?
        random_id = (0...9).map { ('0'..'9').to_a[rand(10)] }.join
        timestamp = (Time.new().to_i*1000).to_s
        cookies[:_ga] = {
            value: '1.2.' + random_id + '.' + timestamp,
            expires: 2.year.from_now,
            domain: 'proxyamp-camilatakemoto.c9users.io'
        }
    end
end

Ele cria um cookie no navegador do usuário. Eu consigo ver o cookie na aba de cookies do Chrome.

Mas quando entro de novo na página, mesmo o cookie sendo passado no request (eu consigo ver na aba de network do Chrome), os objetos:

  • request.cookies
  • cookies

estão vazios.

Como devo fazer para ler os cookies no request?

3 respostas

Oi Camila, isso é muito estranho visto que a própria documentação recomenda o uso do cookies

http://guides.rubyonrails.org/action_controller_overview.html#cookies

Isso é só no chrome ou em outro navegador também há o problema? Será alguma configuração no ActionController? :/

Oi Wanderson, o problema não é o cookie, é o "_" aparentemente. Quando troco o nome do cookie, funciona. O problema é que o Google Analytics precisa desse cookie com undeline. Droga rs

Camila, tenta dar um inspect no cookie pra ver como ele tá chegando no servidor. A instrução é a seguinte:

p cookies

Isso no seu método home antes do if. Desse jeito a gente pode ver todos os valores que estão chegando lá. Só pra lembrar os valores aparecerão no console (terminal), tá bem? Ai você cola a saída aqui pra gente ver o que pode ser.