Sli*_*k23 3 json ruby-on-rails-3
我有一个哈希发布到我的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"}}
Run Code Online (Sandbox Code Playgroud)
我正在借用一些代码来解析它并发回相应的响应.首先,我解析已签名的请求,该工作正常,然后我构建订单信息以将其发送回服务器.这就是麻烦开始的地方,似乎:
...
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
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
can't convert ActiveSupport::HashWithIndifferentAccess into String
Run Code Online (Sandbox Code Playgroud)
这是由这条线引起的:
item = JSON.parse(order_info)
Run Code Online (Sandbox Code Playgroud)
我不确定这意味着什么.替代方案,我想...是我可以让服务器传递一个项目号,然后我可以查询数据库并自己将信息作为JSON提取,而不是尝试解析哈希,但我想如果可以的话,让这项工作.有什么想法吗?
| 归档时间: |
|
| 查看次数: |
7250 次 |
| 最近记录: |