没有将 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