TimeZone类作为一个包装器,服务一个TZinfo::Timezone 实例。

用途:

134个时区的检索。

使用简化的英文单词来取回和显示时区:如"Beijing" => "Asia/Shanghai"。

惰性加载TZInfo::Timezone实例。

创建ActiveSupport::TimeWithZone实例,通过parse , local, at, now方法

设置:

application.rb:

class Application < Rails::Application

config.time_zone = 'Beijing'

end

Time.zone      输出一个实例变量

Time.zone.name 输出 “Beijing”

Time.zone.now   输出一个TimeWithZone实例 Thu, 26 Jul 2018 09:27:24 CST +08:00

✅,TimeWithZone实例 使用Ruby Time实例的相同的API方法。


创建根据用户的配置,来切换时区:

  1. 给User新增一列, time_zone: string (Model)
  2. 一个操作选择timeZone的功能和界面。(routes, view, controller)
  3. 每次登陆后,根据user的time_zone来设置时区。(controller)

第二步详解:

  1. 设置routes :  resource :user
  2. rails g controller users 设置edit, update方法
  3. add edit.html.erb 新增一个form:

<div class="form-group">
  <%= f.label :time_zone %>
  <%= f.time_zone_select :time_zone,  /Beijing/ %>  ⚠️:time_zone_select方法是formbuilder方法。
</div>

最后一步:

在application控制器中:

before_action :set_timezone

def set_timezone

if current_user && current_user.time_zone

Time.zone = current_user.time_zone

end

end

关于设置resource :user

解释:不加S,生成不带id的url。没有index_action。

设计的原因:前台用户更改的是自身的内容,无需id来判断自己和他人的区别。同时网址也不会带id,隐秘性好(无需特意设置网址乱数)。

new_user     GET    /user/new(.:format)    users#new
edit_user     GET    /user/edit(.:format)     users#edit
user        GET    /user(.:format)       users#show
     PATCH/PUT   /user(.:format)       users#update
         DELETE       /user(.:format)       users#destroy
             POST      /user(.:format)       users#create

ActiveSupport::TimeZone; 功能:用户自行选择时区。的更多相关文章

  1. Python全栈day13(作业讲解根据用户输入选择输出字典内容)

    题目,有一个动植物对应的字典内容如下,请根据用户输入列出对应的动物或者植物,实现字典三级菜单功能 dic = { "植物": {"草本植物": ["牵 ...

  2. 确认(confirm 消息对话框)语法:confirm(str); 消息对话框通常用于允许用户做选择的动作,如:“你对吗?”等。弹出对话框(包括一个确定按钮和一个取消按钮)

    确认(confirm 消息对话框) confirm 消息对话框通常用于允许用户做选择的动作,如:"你对吗?"等.弹出对话框(包括一个确定按钮和一个取消按钮). 语法: confir ...

  3. 选盘秘籍:用户如何选择SSD/SATA/SAS?

    先学习下一些专业词汇 IDE (Integrated Drive Electronics) 电子集成驱动器 它的本意是指把"硬盘控制器"与"盘体"集成在一起的硬 ...

  4. 选择时区的命令tzselect

    选择时区的命令tzselect tzselectPlease identify a location so that time zone rules can be set correctly.Plea ...

  5. 【js】AddFavorite/SetHome提醒用户自行操作加入收藏/设置主页

    除了老版本的ie, 就已经没有浏览器能支持js添加收藏夹和设置首页, 浏览器没有开放这个权限了,external.addFavorite这个给禁了. 不过AddFavorite可以起到提醒用户自行操作 ...

  6. 使用mybatis提供的各种标签方法实现动态拼接Sql。这里演示where标签和if标签实现使用姓名的模糊查询和性别查询用户列表,当用户没有选择姓名以及性别时查询出所有的记录。

    1.需求: 使用姓名的模糊查询和性别查询用户列表,当用户没有选择姓名以及性别时查询出所有的记录. 2.在UserMapper接口中定义方法: public List<User> findU ...

  7. mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)

    一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取.共享与锁定. mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他se ...

  8. sencha touch 带本地搜索功能的selectfield(选择插件)

    带本地搜索功能的选择插件,效果图: 在使用selectfield的过程中,数据过大时,数据加载缓慢,没有模糊查询用户体验也不好, 在selectfield的基础上上稍作修改而成,使用方式同select ...

  9. ubantu windons 双系统 转自百度经验贴(在选择时区那一块,记得把网线拔了,不然会黑屏)

    Win7下U盘安装Ubuntu14.04双系统步骤详解 | 浏览:38877 | 更新:2014-05-24 18:09 | 标签:u盘 笔 者由于工作需要使用LINUX系统,之前通过Win7上的VM ...

随机推荐

  1. 【node】---multer模块实现图片上传---【巷子】

    1.安装muterl第三方模块 cnpm install multer --save 2.使用 multer在解析完成后,会向request对象中添加一个body对象和一个file或者files对象( ...

  2. loading图标modal弹窗 和jquery ajax的关系

    在ajax配置中 ,async:false,非异步,modal窗口会失效,只有重新设置为async:true,或者删除async的设置,则loading的模态框才能展示出来 loading图标的模态框 ...

  3. Eclipse Tomcat插件的配置, 及 Tomcat 的配置

    Eclipse Tomcat插件的配置, 及 Tomcat 的配置   首先下载 对应 eclipse 版本的 tomcat 插件版本,(这里要注意: Tomcat 插件是Tomcat 插件,Tomc ...

  4. python调用API

    相信做过自动化运维的同学都用过API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍Python中调用API的几种方式,下面是 ...

  5. 翻译:Bing地图瓦片体系

    Bing Maps Tile System Bing地图瓦片体系 原文链接:http://msdn.microsoft.com/en-us/library/bb259689.aspx Bing Map ...

  6. Flask系列之自定义中间件

    from flask import Flask app = Flask(__name__) @app.route('/index') def index(): return 'Hello World' ...

  7. tcp/udp/socket 端口映射,转发小工具

    1) 利用 Python 的 Socket 端口转发,用于远程维护 https://github.com/knownsec/rtcp 2) 反向端口转发工具 Reverse TCP Port to U ...

  8. [py]class的特殊方法

    类方法 解释 hasattr hasattr(class) getattr - setattr - delattr - - - __getattr__ __setattr__ __delattr__ ...

  9. JDBC连接数据库(二)

    原文地址https://blog.csdn.net/jq_ak47/article/details/55049639 Mysql for java 的JDBC 驱动库安装 1.将下载下来的5.1.40 ...

  10. 4.2 Routing -- Defining Your Routes

    一.概述 1. 当应用程序启动时,路由器负责显示模板,加载数据,另外还设置应用程序的状态.这是通过匹配当前URL到你定义的routes来实现的. 2. Ember app router中的Map方法可 ...