我无法找到解决这个相当常见问题的确切信息。我想设置一个cookie,如果不可能(cookie被禁用),我想显示一个错误页面。
在我的应用程序控制器中,我使用以下命令设置cookie:
if (cookies[:user].blank?)
cookies[:user] = {
:value => (0...10).map{ ('a'..'z').to_a[rand(26)] }.join,
:expires => 6.months.from_now,
:domain => 'localhost'
}
end
然后在我的其他控制器预订控制器中:
if cookies[:user].blank?
@publish_form = false
@no_cookies = true
end
并在视图中:
<% if @no_cookies %>
You need to enable cookies
<% end %>
现在,这不起作用。如果启用了cookie,它将创建一个cookie但如果cookie被禁用,它仍然会创建一个“cookie”,所以在我的预订控制器中它将有一个值,因此不是空白。如果重新加载页面,它将创建另一个cookie值。似乎它只是创建会话或其他东西。使用request.cookie也不起作用。
每当用户进入页面时,我应该使用什么来创建cookie,检查cookie是否存在并根据cookie是否存在显示不同的视图?
答案 0 :(得分:0)
我想你要做第二次请求吗?因为在一个请求中无法知道您是否可以实际设置它们。
也许您可以使用javascript来尝试阅读Cookie?