Rails 测试

GSTA_Yalo · 2018年06月26日 · 最后由 GSTA_Yalo 回复于 2018年07月02日 · 1570 次阅读

test

看一下你 resp.body.split(",") 拿到的是什么类型的数据,应该不是 ActiveRecord::Relation

easonlovewan 回复

数据就是接口吐上来的,上面已经贴出来,应该是 string。

GSTA_Yalo 回复

我说的意思是你把@subscribe.class 一下截个图我看看是什么类型如果是 String 的话,你试试下面的方案 ->
首先:你需要 JSON.parse 一下得到一个 new_hash
然后:new_hash[:subscribs] 得到一个数组,遍历取出来就行了
最后:你得到的不是一个 ActiveRecord::Relation 对象不能那么取值

4 楼 已删除

那你根据 key 去除每个 value 值就行了

easonlovewan 回复

你说的方案是这样吗? new_hash = JSON.parse(resp.body) @subscribe = new_hash[:subscribes]

上面的是一种思路,我再给你提一种:

# 后台
@subscribe = JSON.parse(resp.body, object_class: OpenStruct).subscribes

前台什么都不用改,你试试。

原理就是按照你前台访问的形式你其实希望得到的是一个类似 OpenStruct 的对象,在后台构建出这种对象就行了。

pinewong 回复

这个接口里面的 json 值都是加了“\”的,解析前需要先将这些反斜杠去除吗?

GSTA_Yalo 回复

不用。反斜杠是 Ruby 表示字符串时自己加上去的,不是 json 里的

pinewong 回复

按照你的方法,系统会报错: 按照 trap_subscribe = JSON.parse(resp.body) @subscribe = trap_subscribe[:subscribes] 这种方法,会提示: 😂

easonlovewan 回复

用这种方法,new_hash[:subscribs] 是空类。

GSTA_Yalo 关闭了讨论。 01月22日 17:22
需要 登录 后方可回复, 如果你还没有账号请 注册新账号