4

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

4

1 回答 1

0

我想你必须做第二个请求?由于无法在一个请求中知道您是否可以实际设置它们。

也许您可以使用 javascript 来尝试读取 cookie?

于 2012-05-02T16:59:26.620 回答