标签:输入 inf rip views utc help out alt 对象
??: 两个方法最后都要有controller中的类似before_action :set_time_zone来给当前浏览器分配时区。
创建函数--设置一个Cookie:
function setCookie(name, value) {
var expires = new Date()
expires.setTime(expires.getTime() + (24*60*60*1000)) #1000天后到期
document.cookie = name + ‘‘=" + value + ‘;expires=‘ + expires.toUTCString()
}
使用这个函数:
setCookie("timezone", timezone.name())
解析这些都是JavaScript的用法,create, Read a Cookie with JavaScript:
var x = document.cookie 获得当前document的关联的cookies。
document.cookie = newCookie 设置新的Cookie。
例子:
document.cookie= "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
扩展--JavaScript Cookies:
https://www.w3schools.com/js/js_cookies.asp
12. 在Application.rb中 Controller中定义一个方法 bowser_time_zone
def browser_time_zone
#根据cookies来找到对应的时区,如果没有则使用Time.zone作为默认,任意错误,营救也使用默认
browser_tz = ActiveSupport::TimeZone.find_tzinfo(cookies[:timezone])
ActiveSupport::TimeZone.all.find{ |zone| zone.tzinfo == browser_tz } || Time.zone
rescue TZInfo::UnknownTimezone, TZInfo::InvalidTimezoneIdentifier
Time.zone
end
helper_method :browser_time_zone #添加helper方法
变量browser_tz是如#<TZInfo::DataTimezone: America/Chicago>的对象, 它会和所有TimeZone对象的属性tzinfo做比较。
#<ActiveSupport::TimeZone:0x00007f97f26b0058 @name="American Samoa", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: Pacific/Pago_Pago>>
13.在user注册页,f.time_zone_select :time_zone选项可以加上这个browser_time_zone helper方法
<%= f.time_zone_select :time_zone, nil, default: browser_time_zone.name %>
14. 浏览器显示时区时间:controller增加一个before_action :set_time_zone, if: :user_signed_in?
def set_time_zone
Time.zone = current_user.time_zone
end
15 有一个相关gem ‘local_time‘可以利用。
(GoRails) 自动侦测用户的时区,使用javascript 的jszt库。
标签:输入 inf rip views utc help out alt 对象
原文地址:https://www.cnblogs.com/chentianwei/p/9580059.html