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. oracle日常函数汇总(转载)

    第一篇 著名函数之单值函数 注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式 数值类型函数 数值型函数输入数字型参数并返回数值型的值.多数该类函数的返回值支持38 ...

  2. supervisor安装篇

    服务器环境: [root@kafka60 supervisor-]# uname -a Linux kafka60 -.el6.x86_64 # SMP Tue May :: UTC x86_64 x ...

  3. vuls漏洞扫描工具

    Vuls 是一款适用于 Linux/FreeBSD 的漏洞扫描程序,无代理,采用 Go 语言编写,对于系统管理员来说,每天必须执行安全漏洞分析和软件更新都是一个负担. 为避免生产环境宕机,系统管理员通 ...

  4. 170721、springboot编程之注解(annotation)列表

    (1)@SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfigurati ...

  5. class表与student表之间的关系

    1.班级表 2.学生表 3.student(学生表),Score(成绩表),course(课程表)  4.三张表联合查询     5.连接连个结果集(两个集合必须有相同的列数,列具有相同的数据类型,最 ...

  6. Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口

    对象的序列化就是将对象写入输出流中. 反序列化就是从输入流中将对象读取出来. 用来实现序列化的类都在java.io包中,我们常用的类或接口有: ObjectOutputStream:提供序列化对象并把 ...

  7. Mixed Content: The page at 'https://a.t.com/login' was loaded over HTTPS, but requested an insecure stylesheet 非全站https

    Mixed Content: The page at 'https://a.t.com/login' was loaded over HTTPS, but requested an insecure ...

  8. iOS定位原理和使用建议(转)

    原文:http://ibbs.91.com/thread-1548870-1-1.html 看到很多网友讨论iOS设备定位的问题,这里将我们所了解的关于iPhone.iPad.iPod等的定位原理做详 ...

  9. Portugal 2 1 minute has Pipansihuan Germany and USA tacit or kick the ball

    C Luo assists last moment so that Portugal "back to life", but with just two games to allo ...

  10. (android实战)破解apk

    简单的总结几个关键步骤: 一.工具准备:apktool , dex2jar , jd-gui 二.使用dex2jar + jd-gui 得到apk的java源码 1.用解压工具从 apk包中取出 cl ...