如何在Hash#dig

问题描述

我有以下哈希值:

h = {
      forms: {
        version1: {
          href: { 
            en: 'https://form1_en.example.org',de: 'https://form1_de.example.org'
          }
        },version2: {
          href: {
            en: 'https://form2_en.example.org',de: 'https://form2_de.example.org'
          }
        }
      }
    }

我正在尝试访问用户当前语言环境的verion1 href。所以我要做的是:

Proj.config.forms.dig('version1','href',I18n.locale)

但是,即使 I18n.locale 返回en,这也会导致 nil

但是,它可以很好地工作并返回正确的href。

Proj.config.forms.dig('version1','en')

在这里做错了什么?我不能将 I18n.locale 与hash#dig结合使用吗?

解决方法

我认为可能的问题可能是如果I18n.locale返回:en而不是'en'。在这种情况下,您可以通过以下几种方法解决它:

Proj.config.forms.dig('version1','href',I18n.locale.to_s)

Proj.config.forms.with_indifferent_access.dig('version1',I18n.locale)