我正在使用国家宝石和国家选择宝石。
我的手机表中有一个名为: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 %>
它打印国家/地区名称而不是国际前缀。
如何让它打印数字而不是国家/地区名称?
答案 0 :(得分: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