我正从外部服务中收到这些格式中的任何一种。
#successCase:如果使用正确的状态代码抛出成功/错误
{:sellerid=>2200, :status=>"success"}
#failureCase:因意外错误而收到此类哈希并导致错误
{:property=>"instance.seller_mobile", :message=>"does not meet maximum length of 10", :schema=>{:type=>"string", :required=>true, :minLength=>1, :maxLength=>10}, :instance=>"01234ssss56789", :stack=>"instance.seller_mobile does not meet maximum length of 10"}
这就是我对响应的处理方式,这是错误发生的地方(我认为)
`if response[:status] == 'success'`
#doing something
elsif response[:status] == 'error'
#doing something
end
如果 #successCase:响应,这可以正常工作。但如果 #failureCase:收到错误
类型错误: 没有将符号隐式转换为整数
我可以在Failure/Error: if parsed_response[:status] == 'success'
有人可以告诉我如何解决这个问题吗?
PS:“我在控制台试了一下,它似乎正常工作,但铁路投掷错误”
答案 0 :(得分:0)
我遇到了类似问题,您可以在获得回复后尝试致电response.stringify_keys
,然后使用response["status"] == 'success'
代替response[:status] == 'success'
如果您可以触摸外部服务中的代码。在响应结果之前,您可以调用to_json
,这会将符号键转换为字符串键。
# in rails console
> response = {status: 'success', sellerid: 2200}
=> {:status=>"success", :sellerid=>2200} #symbol key
> response = {"status" => 'success', "sellerid" => 2200}
=> {"status"=>"success", "sellerid"=>2200}
> response.to_json
=> "{\"status\":\"success\",\"sellerid\":2200}"
之后,只需致电response["status"] == 'success'
。