2016-12-11 9 views
0

Rails 5アプリで国の宝石をどのように使って、私の視点に旗の絵文字を表示できるかを調べようとしています。私gemfileでRails 5 - countries gem-flags

は、私が持っている:

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

私はアドレスと呼ばれるモデルを持っています。国:

私のaddress.rbには、gem命令をコピーしようとしています。フラグの使用方法は次のとおりです。

Country Code in Emoji 

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

この指示は私には意味がありません。 "c"とは何ですか? 2行目に "c"が使われていないのはなぜですか?上記の例で属性である場合、なぜ "Country"はクラス名ですか?私のアドレステーブルの国属性を、旗が何を提示するかを決定するために読むことができるものに変換するために何かする必要がありますか?

これらの質問はどこにも答えられていないようです。これは私を除くすべての人が直感的に理解していると思われるものの別の例だと思います。彼らは私のための障害物です。私のアドレスモデルで

、私が持っている:

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

    def country_emoji 
    country.emoji_flag 
    end 

第一の方法は、正常に動作します。適切な国名が表示されます。

2番目の方法は、フラグを取得できるという試みです。私のアドレスビューでは、次に私は持っています:

<%= Address.first.country_emoji %> 

この作品はありません。 - それは、それが探してすべき国把握に努めなければなりませんので、

undefined method `emoji_flag' for "AU":String 

AUは、当該国のために正しいコードです:それは言うエラーが発生します。私は(最初のメソッドを使用するように)に第二の方法を変更しようとした場合

は:

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

は、誰でも使用する方法を見つけ出すことができます:

def country_emoji 
    country_name.emoji_flag 
    end 

私が言うエラーが出ますフラグを表示する国の宝石ですか?

私はthis postを見ました。これは、readmeに指示をどのように適用するかを示すどこかのサンプルアプリケーションがあることを示していますが、これはもう存在しないようです。

答えて

0

フラグを使用するには、私はバージョン2.5に宝石を更新する必要があり、国選択の宝石は、少なくともv3の

0

それはあなたが最初にGemfileにこれを追加する必要があります

c = Country['US'] 

のような構文を使用するためには、gem docsで述べたよう:コンソールで

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 ":String – Mel

+0

" a.country "の定義方法は?クラス(a.country.class)とは何ですか?それはStringでなくCountryでなければなりません。 –