Удаление Cookies из контроллера - PullRequest
28 голосов
/ 24 мая 2011

Я установил некоторые значения cookie в моей форме, используя jQuery.Я могу просто прочитать их в моем контроллере Rails с помощью метода cookies.Когда я звоню cookies.delete(:my_key), они исчезают, когда я снова звоню cookies.Но когда я перезагружаю страницу, файлы cookie снова возвращаются.

Есть ли способ удалить файлы cookie из моего контроллера?странно, так как я смотрю на заголовки ответов, и они, кажется, удаляют куки.Может быть, это потому, что это запрос 302?

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

Ответы [ 2 ]

37 голосов
/ 24 мая 2011

Например, ваш файл cookie выглядит следующим образом

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

Когда вы его попробовали => cookies.delete :foo

В журналах будет указано => Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT

Обратите внимание, что домен отсутствует.Пробовал таким образом

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

Функция =>

# 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
13 голосов
/ 10 июля 2016

Согласно rails api , теперь существует метод удаления, поэтому, если вы не установили домен, используйте

cookies.delete :my_key

и если вы установили домен

cookies.delete :my_key, domain: 'mydomain.com'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...