Получить значения с карты - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть этот хэш:

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING = {
  zimpler: {'EUR' => ['FI'], 'SEK' => ['SE']},
  qiwi: {'EUR' => ['RU', 'KZ'], 'RUB' => ['RU'], 'KZT' => ['KZ'], 'USD' => ['UA']},
  payu: {'CZK' => ['CZ'], 'PLN' => ['PL']},
  entercash: {'EUR' => ['AT', 'DE', 'FI'], 'SEK' => ['SE']},
  davivienda: {'USD' => ['CO']},
  banco_de_chile: {'USD' => ['CL']}
}

Я хочу получить случайную валюту и страну из структуры, используя sample. Я сделал:

currency = PAYMENT_TYPE_TO_CURRENCY_TO_COUNTRY_BY_PAYMENT_TYPE_MAPPING[payment_type].keys.sample
country = PAYMENT_TYPE_TO_CURRENCY_TO_COUNTRY_BY_PAYMENT_TYPE_MAPPING[payment_type][currency].sample

Я получаю:

undefined method `keys' for nil:NilClass (RuntimeError)

Как я могу это реализовать?

1 Ответ

0 голосов
/ 14 сентября 2018

Похоже, вы используете переменную, которая не существует?Ваша структура называется PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING, но вы делаете выборку на PAYMENT_TYPE_TO_CURRENCY_TO_COUNTRY_BY_PAYMENT_TYPE_MAPPING.

Я пробовал ваш код, но использовал ту же переменную, содержащую вашу структуру, и она работает для меня:

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING = {
  zimpler: {'EUR' => ['FI'], 'SEK' => ['SE']},
  qiwi: {'EUR' => ['RU', 'KZ'], 'RUB' => ['RU'], 'KZT' => ['KZ'], 'USD' => ['UA']},
  payu: {'CZK' => ['CZ'], 'PLN' => ['PL']},
  entercash: {'EUR' => ['AT', 'DE', 'FI'], 'SEK' => ['SE']},
  davivienda: {'USD' => ['CO']},
  banco_de_chile: {'USD' => ['CL']}
}

payment_type = :qiwi

currency = PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING[payment_type].keys.sample
country = PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING[payment_type][currency].sample
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...