我尝试使用 ActionView 的 time_zone_select 来显示用于选择 GMT+08:00 'countryName' 的区域列表,但这种方法无助于实现。我用尽了不同的方法来实现同样的目标。
回答我自己的问题,因为我发现以下内容可能对其他人有帮助
在 ROR 中使用自定义时区选择选项的不同方式
1。使用 TZInfo::DataTimezone
2. 使用 TZInfo::Timezone
3.使用time_zone_select
自定义选择选项的优先级
4. 选择选项以获取“GMT +..”时区选项使用ActiveSupport::TimeZone
Note:
1. I have used gem 'bootstrap-select-rails' for class= selectpicker.
2. Search option is introduced in options
"data-live-search": "true"
3.prompt: '--Select timezone--' is added for user prompt.
在 ROR1 中使用自定义时区的不同方式。使用 TZInfo::DataTimezone
苗条的代码片段
= select_tag 'country[time_zone]', options_for_select(TZInfo::DataTimezone.all_country_zone_identifiers {|c| TZInfo::DataTimezone.get(ActiveSupport::TimeZone[c]) }), class: 'form-control'
以上输出
<select name="country[time_zone]" id="country_time_zone" class="form-control"> <option
value="Europe/Andorra">Europe/Andorra
</option> <option value="Asia/Dubai">Asia/Dubai</option>..... </select>
= select_tag 'country[time_zone]', options_for_select(TZInfo::Timezone.all {|c| Time.zone(c.offset)}), class: 'form-control'
以上输出
<select name="country[time_zone]" id="store_time_zone" class="form-control"><option
value="Africa - Abidjan">Africa - Abidjan
</option><option value="Africa - Accra">Africa - Accra</option>..........</select>
3。使用 time_zone_select
在选择选项中自定义优先级= time_zone_select("country", :time_zone,[ActiveSupport::TimeZone['Singapore'],ActiveSupport::TimeZone['Beijing'],ActiveSupport::TimeZone['Chongqing'],ActiveSupport::TimeZone['Hong Kong'],ActiveSupport::TimeZone['Irkutsk'],ActiveSupport::TimeZone['Kuala Lumpur'],ActiveSupport::TimeZone['Perth'],ActiveSupport::TimeZone['Taipei'],ActiveSupport::TimeZone['Ulaanbaatar']],options = {prompt: '--Select timezone--', value: :id}, html_options = {class:'form-control selectpicker', required: true, "data-live-search": "true"})
输出
<select class="form-control selectpicker" required="required" data-live-search="true" name="country[time_zone]" id="country_time_zone" tabindex="-98"><option value="">--Select timezone--</option><option
value="Singapore">(GMT+08:00) Singapore
</option>.........</select>
4。选择选项以使用 ActiveSupport::TimeZone
获取“GMT +..”时区选项= select_tag 'country[time_zone]', options_for_select(ActiveSupport::TimeZone.all{ActiveSupport::TimeZone['Singapore']}, f.object.time_zone), class: 'form-control selectpicker', "data-live-search": "true", prompt: '--Select timezone--'
输出
<select name="country[time_zone]" id="store_time_zone" class="form-control selectpicker" data-live-search="true" required="required" tabindex="-98"><option value="">--Select timezone--</option><option
value="(GMT-12:00) International Date Line West">(GMT-12:00) International Date Line West
</option><option value="(GMT-11:00) American Samoa">(GMT-11:00) American Samoa</option></select>
我想实现下面附上的图像输出,为此遵循方法4