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. Java类集框架——List接口

    学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别.    Collection ...

  2. talib 中文文档(九):# Volatility Indicator Functions 波动率指标函数

    Volatility Indicator Functions 波动率指标函数 ATR - Average True Range 函数名:ATR 名称:真实波动幅度均值 简介:真实波动幅度均值(ATR) ...

  3. Network of Schools---poj1236(强连通分量)

    题目链接 题意:学校有一些单向网络,现在需要传一些文件 求:1,求最少需要向几个学校分发文件才能让每个学校都收到, 2,需要添加几条网络才能从任意一个学校分发都可以传遍所有学校. 解题思路(参考大神的 ...

  4. supervisor - Python进程管理工具(转)

    add by zhj: 下面是在ubuntu上的一些使用经验 1. 简介 supervisor有两个组件:supervisord和supervisorctl,组成了client/server结构. s ...

  5. 【我的Android进阶之旅】解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符

    1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责Lint代码静态检查工作.因此编写了自定义的Lint规则,在调试过程中,编译的时候出现了如下所示的错误: 部分输出日志如下所示: ...

  6. ubuntu常用操作命令以及它的通道模式简解

    1.tail tail -f filename :可以动态查看文件的写入,按ctrl+c结束查看. 要显示 notes 文件的最后十行,输入: tail -n -10 notes tail notes ...

  7. facebook graph api 报错SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)')

    使用facebook graph api,报错如下 一开始以为是https证书验证失败,查了一下午源码,没有看到问题,于是把Python27\lib\site-packages\requests\ad ...

  8. Flask Web 开发 错误页面自定义

    如果要自定义错误画面,无法大多数情况是自定义404和500的情况 首先,要在路由中设置 通过app.error_handler这个装饰器来绑定响应函数 @main.errorhandler(404) ...

  9. Flume环境安装

    源码包下载: http://archive.apache.org/dist/flume/1.8.0/ 集群环境: master 192.168.1.99 slave1 192.168.1.100 sl ...

  10. springcloud7---hystrix

    目前使用eureka server完成了服务注册和服务发现,ribbon完成了客户端负载均衡.如果服务提供者的响应很慢那么服务消费者会强制等待,一直等到http请求超时,如果服务消费者还是其他的服务提 ...