我真的找不到解决这个非常常见问题的确切信息。我想设置一个 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
然后在我的另一个控制器 Booking 控制器中:
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 是否存在显示不同的视图?