如何从包含哈希的数组中获取next_pay等指定键的对应值
问题原因
你提供的代码无法生效的核心原因是Ruby哈希的符号键与字符串键不通用:如果Luckyfit.request接口返回的data字段使用字符串"data"作为键,你用符号:data无法匹配到对应值,会返回nil。
解决方法
场景1:直接提取现有数组中已有的next_pay值
如果你不需要调用接口更新数据,只是想拿示例数组中已存在的next_pay字段值,直接用以下代码即可:
# 提取数组所有元素的next_pay值,返回结果集合 next_pay_list = @next_pay_data.map { |ticket| ticket['next_pay'] } # 提取第一个元素的next_pay值,直接得到"2021-10-05" first_next_pay = @next_pay_data[0]['next_pay']
场景2:调用接口更新next_pay字段后取值
如果你需要通过接口获取最新的next_pay值写入原数组,修改代码兼容两种键格式即可:
@next_pay_data.each do |client_ticket| response = Luckyfit.request('GET', "/client_tickets/payed_finished/#{client_ticket['id']}") # 同时适配符号键、字符串键两种返回格式 client_ticket['next_pay'] = response[:data] || response['data'] end # 更新完成后提取所有next_pay值 updated_next_pay_list = @next_pay_data.map { |ticket| ticket['next_pay'] }
内容的提问来源于stack exchange,提问作者Nikita Smetanin
相关产品推荐
相关产品推荐

