Рельсы 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
).