Rails 5 – 国家gem – 旗帜

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

在我的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”在上面的例子中是一个类名,它是一个属性? 我是否需要做一些事情来将我的地址表中的country属性转换为gem可以读取的内容以确定要呈现的标志?

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

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

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

第一种方法很好。 它显示正确的国家/地区名称。

第二种方法是我尝试获得一面旗帜。 在我的地址视图中,我有:

   

这不起作用。 它会产生一个错误:

 undefined method `emoji_flag' for "AU":String 

AU是相关国家/地区的正确代码 – 所以它必须努力找出它应该寻找的国家/地区。

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

 def country_emoji country_name.emoji_flag end 

我收到一条错误消息:

 undefined method `emoji_flag' for # 

任何人都可以弄清楚如何使用国家gem来展示旗帜?

我看到这篇post暗示有一个示例应用程序在某处显示如何在自述文件中应用指令 – 虽然这似乎不再存在。

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

 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') => # irb(main):003:0> country.emoji_flag => "🇺🇸" 

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

要使用标志,我需要将gem更新到版本2.5,而country-select gem需要至少为v3