我使用了 country_select gem,它运行正常,现在我想将选项值设置为完整的国家/地区名称,与下拉列表中显示的内容相同,而不是contry代码。
例如:我如下:
<select id="order_ship_country" name="order[ship_country]">
<option value="AU">Australia</option>
<option value="CA">Canada</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
</select>
但我期待这样:
<select id="order_ship_country" name="order[ship_country]">
<option value="Australia">Australia</option>
<option value="Canada">Canada</option>
<option value="United Kingdom">United Kingdom</option>
<option value="United States">United States</option>
</select>
提前致谢
答案 0 :(得分:0)
1 /创建一个初始化器
# config/initializers/country_select.rb
CountrySelect::FORMATS[:with_full_country_name] = lambda do |country|
[
country.name,
country.alpha2,
{
'value' => country.name,
}
]
end
2 /在您的视图中使用format
<%= country_select("user", "country", format: :with_full_country_name) %>
如文档中所述:https://github.com/stefanpenner/country_select#using-a-custom-formatter
答案 1 :(得分:-1)
如果您在User
模型中使用它,如their doc所述,则创建名为country_name
的实例方法,该方法将返回该用户的country name
。另请记住将country_code
替换为您用于存储该国家/地区代码的User
模型的属性。
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
然后你使用select
form helper
select("user", "country_code", User.all.collect {|u| [ u.country_name, u.country_code ] })
这应该生成
<select name="user[country_code]" id="user_country_code">
<option value="AF">Africa</option>
<option value="IT">Italy</option>
<option value="FR">France</option>
</select>