2016-12-11 3 views
0

Я пытаюсь понять, как использовать gem страны в моем приложении Rails 5, чтобы я мог отображать флаг emoji на мой взгляд.Rails 5 - Страны gem - flags

В моем Gemfile, у меня есть:

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

У меня есть модель под названием адрес. У него есть атрибут, называемый: country

В моем 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> 

Может кто-нибудь выяснить, как использовать страны gem, чтобы отобразить флаг?

Я видел this post, в котором говорится, что есть пример приложения, где показано, как применять инструкции в readme, хотя это, похоже, больше не существует.

ответ

0

Чтобы использовать флаги, мне нужно обновить камень до версии 2.5 и страны-выбрать драгоценный камень должен быть по крайней мере v3

0

Как говорится в gem docs, для того, чтобы использовать синтаксис как

c = Country['US'] 

вы должны сначала добавить это Gemfile:

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

Test в консоли:

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: undefined method 'emoji_flag 'для" AU ": String – Mel

+0

Как вы определяете" a.country "? Что это за класс (a.country.class)? Это должна быть страна, а не строка. –