3
我有一個哈希被貼到我的Rails應用程序看起來像這樣:無法將HashWithIndifferentAccess轉換爲字符串?
{"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自己的方式提取信息,而不是試圖解析哈希,但我想如果可以的話,做這個工作。有什麼想法嗎?