Рельсы 5 - Страны жемчужина - флаги

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

В моем gemfile у меня есть:

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

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

В моем address.rb я пытаюсь скопировать инструкции gem. Инструкции по использованию флагов гласят:

Country Code in Emoji

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

Инструкции не имеют никакого смысла для меня. Что такое "с"? Почему "с" не используется во 2-й строке? Почему "Страна" - это имя класса, когда в приведенных выше примерах это атрибут? Нужно ли что-то делать для преобразования атрибута моей страны в моей адресной таблице во что-то, что гем может прочитать, чтобы определить, какой флаг представлять?

Ни на один из этих вопросов, похоже, нигде нет ответа. Я думаю, что это еще один пример того, что все, кроме меня, кажется, интуитивно понимают. Они являются контрольно-пропускными пунктами для меня.

В моей модели адреса у меня есть:

  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>

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

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

2 ответа

Решение

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

Как говорится в документах 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')
=> #<Country:0x000000050dc4d8 @country_data_or_code="US" ... >
irb(main):003:0> country.emoji_flag
=> ""

(Я действительно не знаю, почему те же документы предлагают синтаксис Country.emoji_flag).

Другие вопросы по тегам