我正在分析来自HTTP请求的响应代码,并根据该响应代码确定我如何记录该信息.问题是数据始终记录为true.例如,当我收到500响应代码时,我想记录失败.当我得到200时,我想要成功.但是,我总是取得成功.有人可以看看我的代码,或者告诉我我做错了什么,或者我能做些什么来解决它?
这是给我一个问题的代码:
if response.code == "200" or "201" or "202" or "203" or "204"
Run Code Online (Sandbox Code Playgroud)
我认为我传入一个字符串,所以当Ruby评估条件时,它返回true,但我尝试添加:.to_i(base=10)没有成功.
任何帮助将不胜感激.
如前所述,它的if语句: if response.code == "200" or "201" or "202" or "203" or "204"
一个优雅的解决方案是:
if ('200'..'204').include? response.code
Run Code Online (Sandbox Code Playgroud)
问题在于使用or.有关和之间差异的更详细说明,请参见http://www.coshx.com/blog/2012/10/31/rubys-and-and-or-operators-explained,但此处的问题更为基础.就好像你写的那样or||
if response.code == "200" or true
Run Code Online (Sandbox Code Playgroud)
总是会评估为true.您需要将其更改为
if response.code == "200" or response.code == "201" or ...
Run Code Online (Sandbox Code Playgroud)