2015-10-17 2 views
0

Я использую драгоценный камень стран и жемчужину страны.Рельсы: Телефонные номера - международный префикс

У меня есть атрибут в моей телефонной таблице: 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 
Смежные вопросы