web-dev-qa-db-fra.com

Suppression de cookies d'un contrôleur

J'ai défini des valeurs de cookie dans mon formulaire à l'aide de jQuery. Je peux les lire très bien dans mon Rails via la méthode cookies. Lorsque j'appelle cookies.delete(:my_key), ils semblent disparus lorsque j'appelle cookies encore. Mais quand je recharge la page, les cookies sont de retour.

Existe-t-il un moyen de supprimer définitivement les cookies de mon contrôleur?

ÉDITER

C'est très étrange car je regarde les en-têtes de réponse et ils semblent supprimer le cookie. C'est peut-être parce qu'il s'agit d'une demande 302?

Set-Cookie: my_key=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
30
Dex

Par exemple, votre cookie ressemble à ceci

cookies[:foo] = {:value => 'bar', :domain => '.text.com'}

Comme vous avez essayé celui-ci => cookies.delete :foo

Les journaux indiqueront => Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT

Notez que le domaine est manquant. Essayé de cette façon

cookies.delete: foo,: domain => '.text.com'

Fonction =>

# Removes the cookie on the client machine by setting the value to an empty string
# and setting its expiration date into the past.  Like []=, you can pass in an options
# hash to delete cookies with extra data such as a +path+.
def delete(name, options = {})
  options.stringify_keys!
  set_cookie(options.merge("name" => name.to_s, "value" => "", "expires" => Time.at(0)))
end
37
Rubyist

Selon le Rails api , il existe maintenant une méthode de suppression, donc si vous n'avez pas défini l'utilisation du domaine

cookies.delete :my_key

et si vous avez défini le domaine

cookies.delete :my_key, domain: 'mydomain.com'
13
Obromios