Ruby 板


LINE

不好意思再度请教各位,这次不是语法错误的问题 我在做猜拳游戏的cgi,用cookie纪录胜败的次数 设定如下: require 'cgi' cgi = CGI.new cookies = cgi.cookies //将cookie的value转成int win = (cookies["p_win"][0]||0).to_i even = (cookies["p_even"][0]||0).to_i lose = (cookies["p_lose"][0]||0).to_i new_cookie=CGI::Cookie.new("name"=>"p_win","value"=>win.to_s) #胜 new_cookie2=CGI::Cookie.new("name"=>"p_even","value"=>even.to_s) #平手 new_cookie3=CGI::Cookie.new("name"=>"p_lose","value"=>lose.to_s) #败 print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie]) print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie2]) print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie3]) 现在碰的问题是, 我已经写好了判定胜负的机制, 但我就是无法成功将新的值记录到cookie里面。 但用重新整理网页会自动累加数值的方法测试, 确定以上三项的cookie是会被记录的.. 以下是我测试的几种写法,都没有成功,我搞不太懂原因出在哪: (1) if 平手 even += 1 new_cookie2 =CGI::Cookie#value=(even.to_s) 想说用even的新值套入new_cookie2,但失败 (2) if 平手 new_cookie2.value[0] = (new_cookie2.value[0].to_i+1).to_s 因为value只收string, 所以想说转成int再加1再转回string应该可以,结果也不行 想请问一下是这些方法有误,还是我忽略了什麽才会让cookie的值无法被更新? 前面前置的程式码是我照范例去改的。 范例的程式原本是用来记录拜访次数,像是这样: visit = (cookies["visit"][0]||0).to_i+1 一开始就写了这一行,然後才用CGI::Cookie.new去读visit的值, 所以可以成功累加, 但如果把这行原封不动搬到胜负判定的那边, 再重新整理的时候又会跳到程式最前面那几行, 导致cookie跟读取cookie用的那三项数值又被重置.. 请求前辈解惑一下,感激不尽。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 133.51.83.22
1F:→ davidwu0123:结果是从CGI::cookie.new 到print cgi那六行要再写一 11/02 15:47
2F:→ davidwu0123:次才有办法 总觉得这个写法好冗长 也不是很懂原因 11/02 15:47
目前写法如下,要的结果是弄出来了,但原理也没完全弄懂。 初始化的阶段: require 'cgi' cgi = CGI.new cookies = cgi.cookies #读取cookie中胜、败、平手次数,若读取不到则为0 win = (cookies["p_win"][0]||0).to_i even = (cookies["p_even"][0]||0).to_i lose = (cookies["p_lose"][0]||0).to_i #用来储存胜、败、平手次数的cookie new_cookie=CGI::Cookie.new("name"=>"p_win","value"=>win.to_s) new_cookie2=CGI::Cookie.new("name"=>"p_even","value"=>even.to_s) new_cookie3=CGI::Cookie.new("name"=>"p_lose","value"=>lose.to_s) #原因不明,不写出以下三行就无法真正纪录住cookie print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie]) print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie2]) print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie3]) 然後是胜负判定及之後的处理: case judge when 'win' #刷新胜利次数的值,以下类推 win+=1 when 'lose' lose+=1 when 'even' even+=1 end #将新的胜、败、平手次数 new_cookie=CGI::Cookie.new("name"=>"p_win","value"=>win.to_s) new_cookie2=CGI::Cookie.new("name"=>"p_even","value"=>even.to_s) new_cookie3=CGI::Cookie.new("name"=>"p_lose","value"=>lose.to_s) #同样不写这三行就无法成功 print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie]) print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie2]) print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie3]) ※ 编辑: davidwu0123 来自: 133.51.83.22 (11/02 15:56) ※ 编辑: davidwu0123 来自: 133.51.83.22 (11/02 15:56)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP