2010-01-06 39 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的存在。