我正在尝试在我的用户配置文件中为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
答案 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应该会为您提供第二个参数,该参数将包含您的哈希索引。