"...", "buyer"=>"1064897036", "receiver"=>"106489-6ren">
gpt4 book ai didi

ruby-on-rails-3 - 无法将 HashWithIndifferentAccess 转换为字符串?

转载 作者:行者123 更新时间:2023-12-04 07:20:47 25 4
gpt4 key购买 nike

我有一个散列被发布到我的 Rails 应用程序,如下所示:

{"signed_request"=>"...",
"buyer"=>"1064897036",
"receiver"=>"1064897036",
"order_id"=>"224539980951036",
"method"=>"payments_get_items",
"test_mode"=>"1",
"order_info"=>{"description"=>"None",
"image_url"=>"",
"price"=>"1",
"product_url"=>"",
"title"=>"Premium Membership"}}

我正在借用一些代码来解析它并发回适当的响应。首先,我解析已签名的请求,它工作正常,然后我构建订单信息以将其发送回服务器。看来,这就是麻烦的开始:

 ...
elsif method == 'payments_get_items'

order_info = params[:order_info]

item = JSON.parse(order_info)
item['price'] = item['price'].to_i

# for url fields, if not prefixed by http://, prefix them
url_key = [ 'product_url', 'image_url' ]
url_key.each do |key|
if item[key][0..6] != 'http://'
item[key] = "http://#{item[key]}"
end
end

# if payload['test_mode']
if request.params['test_mode']
update_keys = ['title', 'description']
update_keys.each do |key|
item[key] = '[Test Mode] ' + item[key]
end
end

data['content'] = [item]
end

data['method'] = method

render :json => data
end

我收到这个错误:

can't convert ActiveSupport::HashWithIndifferentAccess into String

这是由这条线引起的:

  item = JSON.parse(order_info)

我完全不知道这是什么意思。另一种方法,我想......是我可以让服务器只传递一个项目编号,然后我可以查询数据库并自己提取信息作为 JSON,而不是尝试解析哈希,但我想要如果可以的话,让这项工作。有什么想法吗?

最佳答案

这里没有需要解析的JSON。您的 params 哈希只是一个嵌套哈希,因此访问嵌套 :order_info 数据所需要做的就是 item = params[:order_info]

关于ruby-on-rails-3 - 无法将 HashWithIndifferentAccess 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8299698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com