2

В моем приложении Rails, я установил следующее GemsРубин на Rails- Дисплей Страна Реальное имя со страной-Selecter

gem 'countries' 
gem 'country_select' 
gem 'simple_form' 

Когда пользователь подписывает, они выбирают страну (напр., Соединенное Королевство)

на показать странице пользователя `

<%= @user.country %>` => Displays GB 

Мой вопрос, как я показываю Великобритания как полное имя?

+1

Я не использовал драгоценный камень, но что произойдет, если вы скажете '<% = @ user.country.name%>'? – sebkkom

+0

, когда тип <% = @ user.country.name%>, дисплей получил ошибку undefined method 'name 'для" GB ": String –

ответ

3

От the countries gem's github page:

Этого камень автоматически интегрируется с country_select. Он изменит свое поведение, чтобы сохранить код страны alpha2 вместо имени страны.

Тогда из country_select «s github page

class User < ActiveRecord::Base 
    # Assuming country_select is used with User attribute `country_code` 
    # This will attempt to translate the country name and use the default 
    # (usually English) name if no translation is available 

    def country_name 
    country = ISO3166::Country[country_code] 
    country.translations[I18n.locale.to_s] || country.name 
    end 
end 
+0

Я добавил к модели пользователя, это не работает. –

+0

Обратите внимание, что теперь вы должны сказать '<% = @ user.country _ ** name **%>'. – sebkkom

+0

У меня такая же ошибка, когда я набираю <% = @ user.country.name%>, ошибка была неопределенным методом 'имя 'для« ГБ »: String –

0

@user.country возвращает объект страны, то есть экземпляр класса Country. Когда вы помещаете это в тег erb, у него будет вызван «to_s», поскольку рельсы стараются сделать строку из объекта. Если класс определяет метод to_s, то это то, что возвращается - я предполагаю, что это так, и этот метод возвращает код страны.

Вам нужно вызвать метод .name на стране, чтобы получить имя:

<%= @user.country.name %> 
+0

получил ошибку undefined method' name' для "GB": String –

+0

Какая драгоценность вы используете? Я предположил, что это один из https://github.com/hexorx/countries, но это звучит по-другому. –

0

Я считаю, что проблема должна сделать с отсутствующим драгоценным камнем здесь.

Для этого, чтобы работать в вашей модели пользователя:

def country_name 
    country = ISO3166::Country[country_code] 
    country.translations[I18n.locale.to_s] || country.name 
    end 
end 

Вы должны иметь "countries" gem установлены, а также country_select камень.