ruby-on-rails - 将数组放入 HTTParty API 调用参数会引发“args.ids.split is not a function”错误。我该如何解决?
问题描述
我有一个调用函数value
,它返回下面的数组:
[1893, 1724, 257344, 353491, 301337, 305470, 348, 264660, 76341, 68726]
但是为了更清楚,这里是value function
返回value array
上面的:它是一个像ListInfoService
下面的模块,有 4 个参数,它们是下面的 values 方法中提供的参数ValueSearchService::ValueSearch.new(params[:one], params['two'] = 1_000_000, params[:three], params[:four]).values
def value
params = set_params_if_not_added
value_search = ValueSearchService::ValueSearch.new(
params[:one],
params['two'] = 1_000_000,
params[:three],
params[:four]
).values
value_search['data']
end
我还有一个函数,其中参数ids
应该取值的结果(即逗号分隔的数字):
module ListInfoService
class ListInfo
include HTTParty
base_uri 'localhost:7000'
def initialize(ids, limit, offset)
@options = { query: { ids: ids, some_params: some_params, another_params: another_params } }
end
def movies
self.class.get('/list', @options)
end
end
end
我解释为使上述模块功能的 URL 是:
localhost:7000/list?ids=2,3,6&some_params=5&another_params=0
但是当我通过将value
结果放入下面的函数调用中来调用该函数时,我得到了args.ids.split is not a function
错误:
list_info = ListInfoService::ListInfo.new(
value,
params[:some_params],
params[:another_params]
).movies
render json: list_info
那么如何确保我的ids
论点采用逗号分隔的数字列表?
注意:我正在使用 HTTParty、Rails5.1、Ruby 2.6
value
我认为问题在于我在内部提供ListInfoService::ListInfo
的用于搜索 api的数组。如果我可以改变我在模块中调用我的 api 的方式,或者找到一种方法来提供所需的逗号分隔的 id 列表,那么它将起作用。
解决方案
固定的。这就是我为完成这项工作所做的。请记住,此错误是由于将数组传递到 HTTParty API 调用参数而引发的。因此args.ids.split is not a function
错误。
为我解决这个问题只需将其转换为value
,string
而不是array
仅添加.join(', ')
到方法中的响应。见下文:
def value
params = set_params_if_not_added
value_search = ValueSearchService::ValueSearch.new(
params[:one],
params['two'] = 1_000_000,
params[:three],
params[:four]
).values
value_search['data'].join(', ') # This will solve it.
end
因此,当您将value
结果附加到已定义的 HTTParty 模块调用ids
参数时,它会将其作为字符串并且工作正常。
list_info = ListInfoService::ListInfo.new(
value, # Note that this line is `ids` under ListInfoService::ListInfo argument and cant be array.
params[:some_params],
params[:another_params]).movies
render json: list_info
推荐阅读
- java - 如何使用 GSON 库反序列化具有嵌套对象的 Json 并在 TextView 中显示它们
- laravel - 为什么 `have` 只适用于 laravel eloquent 上的 `group by` 字段?
- json - 无法在 Unity 中使用 JSONUtility 创建的 Java 脚本(节点 JS - Express)中读取 JSON 数据
- spring - 设置 SSL 连接时出现 Spring Boot 错误
- jquery - 尝试在 Gatsby.js 中使用 react-materialize 组件,得到 ReferenceError: $ is not defined
- python - Python - 如何获取连接操作系统类型?
- javascript - Firefox/Chrome JSON 将 JSON 中的数值解析为数值 -1 表示 1 个特定值
- javascript - JavaScript .animate() 不适用于 Chrome 69 及更高版本
- python - 在 Visual Studio 上创建新的 python 项目时出错
- css - 没有 Javascript 的随机视差背景 - 可能吗?