Я объявила глобальную переменную в моем контроллере приложений rails
как $decrypted_attessec = "verified decrypted cookie"
, и я обращаюсь к нему через все мои контроллеры. Когда я закрою окно браузера, глобальная переменная должна быть установлена на нуль или уничтожена, что не выполняется.Уничтожить или установить глобальную переменную в nil, после закрытия браузера
В моем случае оно всегда содержит начальное значение, которое равно "verified decrypted cookie"
, однако перезапуск сервера уничтожает глобальную переменную и повторно инициализирует ее, что я хочу сделать и при закрытии браузера.
Мой код:
application_controller.rb
def validate_user
$decrypted_attessec = "verfied decrypted cookie"
#I am getting value of $decrypted_attessec as verfied decrypted cookie from different action which would be either an empty or non-empty string
if !$decrypted_attessec.empty?
#redirect_to clicked path
else
redirect_to "login url"
end
end
Welcome_controller.rb < application_controller.rb
if $decrypted_attessec.empty?
before_action :validate_user, :except => [:index, :csplogin]
end
Где я пошел не так с кодом?
Ruby on Rails не имеет гражданства, поэтому закрытие браузера не будет иметь никакого эффекта. Глобальные переменные обычно считаются плохой практикой. Похоже, вам может понадобиться переменная сеанса? Что ты пытаешься сделать? – mysmallidea
Если на вашем сервере подключено много браузеров, то когда нужно свернуть глобальную переменную? – Aetherus
обнаружение, когда браузер закрывается, не встроен в рельсы, для этого вам необходимо использовать AJAX или websockets. –