时区下拉列表,其中选择值为索引

时间:2015-10-07 02:52:54

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试在我的用户配置文件中为time_zones创建一个选择下拉列表,但我需要列表和索引来匹配,因为我没有使用文本,我使用整数来存储我的数据库中的区域。我这样做,所以我可以将其显示为rails admin中的下拉菜单而不是文本输入。

用户:

validates_inclusion_of :time_zone, in: ActiveSupport::TimeZone.us_zones.map { |z| z.name }, 
message: "is not a valid time zone", 
allow_blank: true

 # This allows me to display the time_zone as a dropdown in rails admin instead of a text box
 TIMEZONES = ActiveSupport::TimeZone.us_zones.map { |z| z.name }
 def time_zone_enum
   TIMEZONES.each_with_index.to_a
 end

查看:

<%= f.collection_select :time_zone, ActiveSupport::TimeZone.us_zones.map { |z| z.name }, value, name %>

 # I don't know how to get the value to be an index of the map operation and to display the name

1 个答案:

答案 0 :(得分:0)

尝试map.each_with_index,如下所述:How to map with index in Ruby?

<%= f.collection_select :time_zone, ActiveSupport::TimeZone.us_zones.map.each_with_index { |z, i| i.to_s.concat(" #{z.name}") }, name %>

您可能需要修改该代码才能在rails应用程序中运行,但在地图上调用each_with_index应该会为您提供第二个参数,该参数将包含您的哈希索引。