没有将 ActiveSupport::HashWithIndifferentAccess 隐式转换为字符串?
No implicit conversion of ActiveSupport::HashWithIndifferentAccess into String?
我正在使用 rails 开发一个 Shopify 应用程序,我正在尝试处理属于 webhook 的数据。
我正在尝试处理的数据:
{
"id": 820982911946154508,
"email": "jon@doe.ca",
"closed_at": null,
"created_at": "2017-09-22T14:07:04-04:00",
"updated_at": "2017-09-22T14:07:04-04:00",
"number": 234,
"note": null,
"token": "123456abcd",
"gateway": null,
"test": true,
"total_price": "403.00",
"subtotal_price": "393.00",
"total_weight": 0,
"total_tax": "0.00",
"taxes_included": false,
"currency": "USD",
"financial_status": "voided",
"confirmed": false,
"total_discounts": "5.00",
"total_line_items_price": "398.00",
"cart_token": null,
"buyer_accepts_marketing": true,
"name": "#9999",
"referring_site": null,
"landing_site": null,
"cancelled_at": "2017-09-22T14:07:04-04:00",
"cancel_reason": "customer",
"total_price_usd": null,
"checkout_token": null,
"reference": null,
"user_id": null,
"location_id": null,
"source_identifier": null,
"source_url": null,
"processed_at": null,
"device_id": null,
"phone": null,
"customer_locale": "en",
"app_id": null,
"browser_ip": null,
"landing_site_ref": null,
"order_number": 1234,
"discount_codes": [
],
"note_attributes": [
],
"payment_gateway_names": [
"visa",
"bogus"
],
"processing_method": "",
"checkout_id": null,
"source_name": "web",
"fulfillment_status": "pending",
"tax_lines": [
],
"tags": "",
"contact_email": "jon@doe.ca",
"order_status_url": "https:\/\/checkout.local\/690933842\/orders\/123456abcd\/authenticate?key=abcdefg",
"line_items": [
{
"id": 866550311766439020,
"variant_id": null,
"title": "IPod Nano - 8GB",
"quantity": 1,
"price": "199.00",
"grams": 567,
"sku": "IPOD2008PINK",
"variant_title": null,
"vendor": null,
"fulfillment_service": "manual",
"product_id": 632910392,
"requires_shipping": true,
"taxable": true,
"gift_card": false,
"name": "IPod Nano - 8GB",
"variant_inventory_management": null,
"properties": [
],
"product_exists": true,
"fulfillable_quantity": 1,
"total_discount": "0.00",
"fulfillment_status": null,
"tax_lines": [
]
},
{
"id": 141249953214522974,
"variant_id": null,
"title": "IPod Nano - 8GB",
"quantity": 1,
"price": "199.00",
"grams": 567,
"sku": "IPOD2008PINK",
"variant_title": null,
"vendor": null,
"fulfillment_service": "manual",
"product_id": 632910392,
"requires_shipping": true,
"taxable": true,
"gift_card": false,
"name": "IPod Nano - 8GB",
"variant_inventory_management": null,
"properties": [
],
"product_exists": true,
"fulfillable_quantity": 1,
"total_discount": "5.00",
"fulfillment_status": null,
"tax_lines": [
]
}
],
"shipping_lines": [
{
"id": 271878346596884015,
"title": "Generic Shipping",
"price": "10.00",
"code": null,
"source": "shopify",
"phone": null,
"requested_fulfillment_service_id": null,
"delivery_category": null,
"carrier_identifier": null,
"discounted_price": "10.00",
"tax_lines": [
]
}
],
"billing_address": {
"first_name": "Bob",
"address1": "123 Billing Street",
"phone": "555-555-BILL",
"city": "Billtown",
"zip": "K2P0B0",
"province": "Kentucky",
"country": "United States",
"last_name": "Biller",
"address2": null,
"company": "My Company",
"latitude": null,
"longitude": null,
"name": "Bob Biller",
"country_code": "US",
"province_code": "KY"
},
"shipping_address": {
"first_name": "Steve",
"address1": "123 Shipping Street",
"phone": "555-555-SHIP",
"city": "Shippington",
"zip": "40003",
"province": "Kentucky",
"country": "United States",
"last_name": "Shipper",
"address2": null,
"company": "Shipping Company",
"latitude": null,
"longitude": null,
"name": "Steve Shipper",
"country_code": "US",
"province_code": "KY"
},
"fulfillments": [
],
"refunds": [
],
"customer": {
"id": 115310627314723954,
"email": "john@test.com",
"accepts_marketing": false,
"created_at": null,
"updated_at": null,
"first_name": "John",
"last_name": "Smith",
"orders_count": 0,
"state": "disabled",
"total_spent": "0.00",
"last_order_id": null,
"note": null,
"verified_email": true,
"multipass_identifier": null,
"tax_exempt": false,
"phone": null,
"tags": "",
"last_order_name": null,
"default_address": {
"id": 715243470612851245,
"customer_id": 115310627314723954,
"first_name": null,
"last_name": null,
"company": null,
"address1": "123 Elm St.",
"address2": null,
"city": "Ottawa",
"province": "Ontario",
"country": "Canada",
"zip": "K2H7A8",
"phone": "123-123-1234",
"name": "",
"province_code": "ON",
"country_code": "CA",
"country_name": "Canada",
"default": false
}
}
}
所以我想获得 "shipping_lines.code",我正在尝试:
webp = webhook[:shipping_lines].first
使用以下方式打印 "code":
Rails.logger.debug("webp::::::::::" + webp.code)
但它引发了 "No implicit conversion of ActiveSupport::HashWithIndifferentAccess into String" 错误...
我该如何解决?
webp = webhook[:shipping_lines].first # Return hash
赞:
{:id=>271878346596884015, :title=>"Generic Shipping", :price=>"10.00", :code=>"null", :source=>"shopify", :phone=>"null", :requested_fulfillment_service_id=>"null", :delivery_category=>"null", :carrier_identifier=>"null", :discounted_price=>"10.00", :tax_lines=>[]}
尝试:
Rails.logger.debug("webp::::::::::" + webp[:code])
结果:
webp::::::::::null
我正在使用 rails 开发一个 Shopify 应用程序,我正在尝试处理属于 webhook 的数据。
我正在尝试处理的数据:
{
"id": 820982911946154508,
"email": "jon@doe.ca",
"closed_at": null,
"created_at": "2017-09-22T14:07:04-04:00",
"updated_at": "2017-09-22T14:07:04-04:00",
"number": 234,
"note": null,
"token": "123456abcd",
"gateway": null,
"test": true,
"total_price": "403.00",
"subtotal_price": "393.00",
"total_weight": 0,
"total_tax": "0.00",
"taxes_included": false,
"currency": "USD",
"financial_status": "voided",
"confirmed": false,
"total_discounts": "5.00",
"total_line_items_price": "398.00",
"cart_token": null,
"buyer_accepts_marketing": true,
"name": "#9999",
"referring_site": null,
"landing_site": null,
"cancelled_at": "2017-09-22T14:07:04-04:00",
"cancel_reason": "customer",
"total_price_usd": null,
"checkout_token": null,
"reference": null,
"user_id": null,
"location_id": null,
"source_identifier": null,
"source_url": null,
"processed_at": null,
"device_id": null,
"phone": null,
"customer_locale": "en",
"app_id": null,
"browser_ip": null,
"landing_site_ref": null,
"order_number": 1234,
"discount_codes": [
],
"note_attributes": [
],
"payment_gateway_names": [
"visa",
"bogus"
],
"processing_method": "",
"checkout_id": null,
"source_name": "web",
"fulfillment_status": "pending",
"tax_lines": [
],
"tags": "",
"contact_email": "jon@doe.ca",
"order_status_url": "https:\/\/checkout.local\/690933842\/orders\/123456abcd\/authenticate?key=abcdefg",
"line_items": [
{
"id": 866550311766439020,
"variant_id": null,
"title": "IPod Nano - 8GB",
"quantity": 1,
"price": "199.00",
"grams": 567,
"sku": "IPOD2008PINK",
"variant_title": null,
"vendor": null,
"fulfillment_service": "manual",
"product_id": 632910392,
"requires_shipping": true,
"taxable": true,
"gift_card": false,
"name": "IPod Nano - 8GB",
"variant_inventory_management": null,
"properties": [
],
"product_exists": true,
"fulfillable_quantity": 1,
"total_discount": "0.00",
"fulfillment_status": null,
"tax_lines": [
]
},
{
"id": 141249953214522974,
"variant_id": null,
"title": "IPod Nano - 8GB",
"quantity": 1,
"price": "199.00",
"grams": 567,
"sku": "IPOD2008PINK",
"variant_title": null,
"vendor": null,
"fulfillment_service": "manual",
"product_id": 632910392,
"requires_shipping": true,
"taxable": true,
"gift_card": false,
"name": "IPod Nano - 8GB",
"variant_inventory_management": null,
"properties": [
],
"product_exists": true,
"fulfillable_quantity": 1,
"total_discount": "5.00",
"fulfillment_status": null,
"tax_lines": [
]
}
],
"shipping_lines": [
{
"id": 271878346596884015,
"title": "Generic Shipping",
"price": "10.00",
"code": null,
"source": "shopify",
"phone": null,
"requested_fulfillment_service_id": null,
"delivery_category": null,
"carrier_identifier": null,
"discounted_price": "10.00",
"tax_lines": [
]
}
],
"billing_address": {
"first_name": "Bob",
"address1": "123 Billing Street",
"phone": "555-555-BILL",
"city": "Billtown",
"zip": "K2P0B0",
"province": "Kentucky",
"country": "United States",
"last_name": "Biller",
"address2": null,
"company": "My Company",
"latitude": null,
"longitude": null,
"name": "Bob Biller",
"country_code": "US",
"province_code": "KY"
},
"shipping_address": {
"first_name": "Steve",
"address1": "123 Shipping Street",
"phone": "555-555-SHIP",
"city": "Shippington",
"zip": "40003",
"province": "Kentucky",
"country": "United States",
"last_name": "Shipper",
"address2": null,
"company": "Shipping Company",
"latitude": null,
"longitude": null,
"name": "Steve Shipper",
"country_code": "US",
"province_code": "KY"
},
"fulfillments": [
],
"refunds": [
],
"customer": {
"id": 115310627314723954,
"email": "john@test.com",
"accepts_marketing": false,
"created_at": null,
"updated_at": null,
"first_name": "John",
"last_name": "Smith",
"orders_count": 0,
"state": "disabled",
"total_spent": "0.00",
"last_order_id": null,
"note": null,
"verified_email": true,
"multipass_identifier": null,
"tax_exempt": false,
"phone": null,
"tags": "",
"last_order_name": null,
"default_address": {
"id": 715243470612851245,
"customer_id": 115310627314723954,
"first_name": null,
"last_name": null,
"company": null,
"address1": "123 Elm St.",
"address2": null,
"city": "Ottawa",
"province": "Ontario",
"country": "Canada",
"zip": "K2H7A8",
"phone": "123-123-1234",
"name": "",
"province_code": "ON",
"country_code": "CA",
"country_name": "Canada",
"default": false
}
}
}
所以我想获得 "shipping_lines.code",我正在尝试:
webp = webhook[:shipping_lines].first
使用以下方式打印 "code":
Rails.logger.debug("webp::::::::::" + webp.code)
但它引发了 "No implicit conversion of ActiveSupport::HashWithIndifferentAccess into String" 错误...
我该如何解决?
webp = webhook[:shipping_lines].first # Return hash
赞:
{:id=>271878346596884015, :title=>"Generic Shipping", :price=>"10.00", :code=>"null", :source=>"shopify", :phone=>"null", :requested_fulfillment_service_id=>"null", :delivery_category=>"null", :carrier_identifier=>"null", :discounted_price=>"10.00", :tax_lines=>[]}
尝试:
Rails.logger.debug("webp::::::::::" + webp[:code])
结果:
webp::::::::::null