Rails 5 - 国家宝石 - 旗帜

时间:2016-12-11 03:55:38

标签: ruby-on-rails ruby countries

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

在我的gemfile中,我有:

Vector3 origin = Head.transform.position + GvrController.ArmModel.wristPosition;
Vector3 rayDirection = GvrController.ArmModel.pointerRotation * Vector3.forward;

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

的属性

在我的address.rb中,我正在尝试复制gem指令。使用标志的说明如下:

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

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

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

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

Country Code in Emoji

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

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

第二种方法是我能够得到一面旗帜。在我的地址视图中,我有:

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

  def country_emoji
    country.emoji_flag
  end

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

    <%=  Address.first.country_emoji %>

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

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

undefined method `emoji_flag' for "AU":String

我收到错误消息:

def country_emoji
    country_name.emoji_flag
  end

有人能弄清楚如何使用countries gem来显示标志吗?

我看到this post表明有一个示例应用程序在某处显示如何应用自述文件中的说明 - 虽然这似乎不再存在。

2 个答案:

答案 0 :(得分:0)

正如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)。

答案 1 :(得分:0)

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