2010-01-06 57 views
0

我知道如何使用CGI和Ruby读取cookie,但问题是,如果我尝试在不存在的情况下读取cookies.value [0],它会中断我的程序。所以我需要检查cookie是否在那里先阅读。我无法在互联网上的任何地方找到这个答案。如何使用Ruby编程语言检测cookie是否存在?

请帮助,谢谢, 亨利。

回答

1

Ruby CGI doc的说:

HTTP Cookie是自动从请求解析。它们可以从cookies()访问器获得,该访问器从cookie名称返回一个哈希到CGI :: Cookie对象。

如果是这种情况,那么cookies就存储在一个常规的散列中。您可以使用常规Hash API检查目标cookie的存在,包括Hash.key?()

if cgi.cookies().key?("mycookie") 
    p "Cookie value is #{cgi.cookies()["mycookie"].value}" 
else 
    p "Cookie does not exist." 
end 
+0

是否可以向我展示一段代码来检查名为“mycookie”的cookie是否存在?我知道在PHP中,你可以使用像if(isset [cookiename]) 感谢您的答案 – Henry 2010-01-06 23:48:11

+0

我实际上正在写一个,而你离开了那个评论:-) – 2010-01-06 23:50:58

+0

供参考:我写这个例子写意;我没有真的跑过它。它应该足够接近让你走,但要留意(轻微)错误。 – 2010-01-06 23:52:30

0

这工作我用苗条。

- if cookies().key?("cookieName") 
    p Cookie value is #{cookies()["cookieName"]} 
- else 
    p "Cookie does not exist." 
end 

首先将导致true如果cookie的存在。