Rails: Телефонные номера - международный префикс

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

В моей таблице телефонов есть атрибут :country_code. Я прошу пользователей в новой телефонной форме выбрать свою страну:

<%= f.input :country_code,  label: false, wrapper: :vertical_input_group  do %>
  <span class="input-group-addon">Country</span>
  <%= country_select("phone", "country_code", {priority_countries["AU", "GB", "NZ"], selected: "AU" }, class: "form-control" ) %>
<% end %>

Я хочу взять эту страну и получить международный префикс.

У меня есть модель телефонов, которая у меня есть:

def landline_number
   [international_code, area_code, phone_number].join('   ')
end

def international_code
   self.country_code = ISO3166::Country[country_code]
   country_code.translations[I18n.locale.to_s] || country_code.international_prefix
end

Когда я пытаюсь:

<%= @phone.landline_number %>

Он печатает название страны вместо международного префикса.

Как заставить его печатать номер вместо названия страны?


person Mel    schedule 17.10.2015    source источник


Ответы (1)


Мне кажется, что ваша проблема в этой строке:

country_code.translations[I18n.locale.to_s] || country_code.international_prefix

по примерам документации

# Get a specific translation
c.translation('de') #=> 'Vereinigte Staaten von Amerika'
c.translations['fr'] #=> "États-Unis"

ISO3166::Country.translations             # {"DE"=>"Germany",...}
ISO3166::Country.translations('DE')       # {"DE"=>"Deutschland",...}

вы на самом деле сначала извлекаете название страны, и так как он нашел код

country_code.international_prefix

не выполняется из-за || состояние у вас. Если бы вы удалили код слева от || он должен работать. Другими словами, попробуйте оставить свой метод следующим образом:

def international_code
    self.country_code = ISO3166::Country[country_code]
    country_code.international_prefix
end
person Jose    schedule 17.10.2015