2016-12-11 62 views
0

我想弄清楚如何在我的Rails 5應用程序中使用國家寶石,這樣我就可以在我的視圖中顯示標誌表情符號。Rails 5 - 國家寶石 - 旗幟

在我的Gemfile,我有:

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

我有一個名爲地址模型。它有一個屬性叫:國家

在我的address.rb我試圖複製寶石指令。使用標誌說明說:

Country Code in Emoji 

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

該指示對我沒有任何意義。什麼是「c」?爲什麼在第二行中不使用「c」?爲什麼在上面的例子中「國家」是一個類名稱,它是一個屬性?我需要做些什麼來將我的地址表中的國家/地區屬性轉換爲寶石可以讀取的內容以確定要顯示哪個標誌?

這些問題都沒有在任何地方回答。我認爲這是另一個假設每個人(除了我以外)似乎都直觀理解的事例。他們是我的障礙。

在我的地址模式,我有:

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> 

任何人都可以找出如何使用國家寶石展示一面旗幟?

我看到了this post這表明有一個示例應用程序在某處顯示如何在自述文件中應用指令 - 儘管似乎不再存在。

回答

0

要使用的標誌,我需要更新的寶石到2.5版本,並在全國選寶石需要至少V3

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

我在Gemfile中寶石的文件顯示(包括要求) – Mel

+0

無論如何,當我在控制檯中嘗試同樣的東西時,我在帖子中描述過,我得到了與我在帖子中列出的相同的錯誤:a.country.emoji_flag NoMethodError:未定義的方法'emoji_flag'for「 AU「:字符串 – Mel

+0

你如何定義」a.country「?什麼是類(a.country.class)?它應該是國家,而不是字符串。 –