我的登录页面就像一个大型滚动信息图。我需要实现一个"下次跳过这个"复选框,以便返回进行身份验证的用户可以跳过每次访问网站时都必须看到它。
着陆页是由static_controller.rb
提供的静态页面:
def landing
if cookies[:skip_landing]
redirect_to home_url
else
if params[:skip_landing]
cookies.permanent[:skip_landing] = true
end
end
end
这主要是按照我认为应该的方式运作。它将cookie[:skip_landing]
设置为 true 。但是,当我清除该Cookie时,我无法返回目标网页。我被重定向到主页,只有在设置了cookie时才应该为true。不知何故,cookie被重置
我错过了什么?
答案 0 :(得分:0)
有趣的问题。我调试了大约10分钟,然后意识到cookies[:skip_landing]
实际上是一个字符串。
所以即使你有cookies[:skip_landing] = 'false'
,它if cookies[:skip_landing]
仍然会被视为真,因为红宝石中只有nil
和false
是假的。
你可以试试这个:
if cookies[:skip_landing] == '1'
redirect_to home_url
elsif params[:skip_landing]
cookies.permanent[:skip_landing] = '1'
end
端