Rails:检查cookie

时间:2012-05-02 16:56:24

标签: ruby-on-rails cookies

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

1 个答案:

答案 0 :(得分:0)

我想你要做第二次请求吗?因为在一个请求中无法知道您是否可以实际设置它们。

也许您可以使用javascript来尝试阅读Cookie?