0

我试图弄清楚如何在我的 Rails 5 应用程序中使用国家宝石,以便我可以在我的视图中显示一个标志表情符号。

在我的 gemfile 中,我有:

gem 'countries', :require => 'countries/global'
gem 'country_select'

我有一个名为地址的模型。它有一个名为 :country 的属性

在我的 address.rb 中,我试图复制 gem 说明。使用标志的说明说:

Country Code in Emoji

c = Country['MY']
Country.emoji_flag # => ""

这些说明对我没有任何意义。什么是“c”?为什么第二行不使用“c”?为什么在上面的示例中,“Country”是一个类名,它是一个属性?我是否需要做一些事情来将地址表中的国家属性转换为 gem 可以读取的内容以确定要显示的标志?

这些问题似乎在任何地方都没有得到回答。我认为这是假设每个人(除了我)似乎都直观地理解的另一个例子。他们是我的障碍。

在我的地址模型中,我有:

  def country_name
    country = self.country
    ISO3166::Country[country]
  end

  def country_emoji
    country.emoji_flag
  end

第一种方法效果很好。它显示正确的国家名称。

第二种方法是我尝试获得标志。在我的地址视图中,我有:

    <%=  Address.first.country_emoji %>

这不起作用。它会产生一个错误,上面写着:

undefined method `emoji_flag' for "AU":String

AU 是相关国家/地区的正确代码 - 因此它必须努力找出它应该寻找哪个国家/地区。

如果我尝试将第二种方法(以便使用第一种方法)更改为:

def country_emoji
    country_name.emoji_flag
  end

我收到一条错误消息:

undefined method `emoji_flag' for #<ISO3166::Country:0x007fe87145d7e0>

谁能弄清楚如何使用国家宝石来展示国旗?

我看到这篇文章表明在某处有一个示例应用程序来展示如何应用自述文件中的说明 - 尽管这似乎不再存在。

4

2 回答 2

1

正如它在gem docs中所述,为了使用类似的语法

c = Country['US']

您应该首先将其添加到 Gemfile:

gem 'countries', :require => 'countries/global'

在控制台中测试:

irb(main):001:0> require "countries/global"
=> true
irb(main):002:0> country = Country.new('US')
=> #<Country:0x000000050dc4d8 @country_data_or_code="US" ... >
irb(main):003:0> country.emoji_flag
=> ""

(我真的不知道为什么相同的文档建议使用语法Country.emoji_flag)。

于 2016-12-11T12:17:49.263 回答
0

要使用标志,我需要将 gem 更新到 2.5 版,并且国家/地区选择 gem 需要至少为 v3

于 2016-12-16T06:35:29.920 回答