选择一些时区并提交表单后,当我执行 params["time_zone"] 时,我得到了 "#, @c-6ren">
gpt4 book ai didi

ruby-on-rails - 如何从 Rails 的下拉列表中获取选定的时区

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:56 25 4
gpt4 key购买 nike

在表单中下拉时区

<%= time_zone_select :time_zone, ActiveSupport::TimeZone.all, nil,
{:include_blank => false,:prompt=>"Select Time Zone"} %>

选择一些时区并提交表单后,当我执行 params["time_zone"] 时,我得到了

"#<ActiveSupport::TimeZone:0x00000001ff5450 @name=%22American Samoa%22, @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Pacific/Pago_Pago>, 
@current_period=#<TZInfo::TimezonePeriod: #<TZInfo::TimezoneTransitionDefinition: #<TZInfo::TimeOrDateTime: 439038000>,#<TZInfo::TimezoneOffset: -39600,0,SST>>,nil>>,
#<ActiveSupport::TimeZone:0x00000002024bb0 @name=%22International Date Line West%22, @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Pacific/Midway>,..............

我如何获得选定的时区? 注意:我将时区保存在字符串中

最佳答案

只需在 ActiveSupport::TimeZone 对象上调用 .name:

irb(main):055:0> ActiveSupport::TimeZone.new("American Samoa").name
=> "American Samoa"

您可以使用自定义 setter 来完成此操作。示例:

class City < ActiveRecord::Base
# automatically convert ActiveSupport::TimeZone
# objects into a serializable string.
def time_zone=(tz)
super(tz.try(:name) || tz)
end
end

class CitiesController
def create
@city = City.create(city_params)
respond_with(@city)
end

def city_params
params.require(:city).permit(:time_zone)
end
end

关于ruby-on-rails - 如何从 Rails 的下拉列表中获取选定的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com