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 %>
Он печатает название страны вместо международного префикса.
Как заставить его напечатать номер вместо названия страны?
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