ActiveSupport::TimeZone; 功能:用户自行选择时区。
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方法。
创建根据用户的配置,来切换时区:
- 给User新增一列, time_zone: string (Model)
- 一个操作选择timeZone的功能和界面。(routes, view, controller)
- 每次登陆后,根据user的time_zone来设置时区。(controller)
第二步详解:
- 设置routes : resource :user
- rails g controller users 设置edit, update方法
- 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; 功能:用户自行选择时区。的更多相关文章
- Python全栈day13(作业讲解根据用户输入选择输出字典内容)
题目,有一个动植物对应的字典内容如下,请根据用户输入列出对应的动物或者植物,实现字典三级菜单功能 dic = { "植物": {"草本植物": ["牵 ...
- 确认(confirm 消息对话框)语法:confirm(str); 消息对话框通常用于允许用户做选择的动作,如:“你对吗?”等。弹出对话框(包括一个确定按钮和一个取消按钮)
确认(confirm 消息对话框) confirm 消息对话框通常用于允许用户做选择的动作,如:"你对吗?"等.弹出对话框(包括一个确定按钮和一个取消按钮). 语法: confir ...
- 选盘秘籍:用户如何选择SSD/SATA/SAS?
先学习下一些专业词汇 IDE (Integrated Drive Electronics) 电子集成驱动器 它的本意是指把"硬盘控制器"与"盘体"集成在一起的硬 ...
- 选择时区的命令tzselect
选择时区的命令tzselect tzselectPlease identify a location so that time zone rules can be set correctly.Plea ...
- 【js】AddFavorite/SetHome提醒用户自行操作加入收藏/设置主页
除了老版本的ie, 就已经没有浏览器能支持js添加收藏夹和设置首页, 浏览器没有开放这个权限了,external.addFavorite这个给禁了. 不过AddFavorite可以起到提醒用户自行操作 ...
- 使用mybatis提供的各种标签方法实现动态拼接Sql。这里演示where标签和if标签实现使用姓名的模糊查询和性别查询用户列表,当用户没有选择姓名以及性别时查询出所有的记录。
1.需求: 使用姓名的模糊查询和性别查询用户列表,当用户没有选择姓名以及性别时查询出所有的记录. 2.在UserMapper接口中定义方法: public List<User> findU ...
- mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)
一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取.共享与锁定. mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他se ...
- sencha touch 带本地搜索功能的selectfield(选择插件)
带本地搜索功能的选择插件,效果图: 在使用selectfield的过程中,数据过大时,数据加载缓慢,没有模糊查询用户体验也不好, 在selectfield的基础上上稍作修改而成,使用方式同select ...
- ubantu windons 双系统 转自百度经验贴(在选择时区那一块,记得把网线拔了,不然会黑屏)
Win7下U盘安装Ubuntu14.04双系统步骤详解 | 浏览:38877 | 更新:2014-05-24 18:09 | 标签:u盘 笔 者由于工作需要使用LINUX系统,之前通过Win7上的VM ...
随机推荐
- Linux(Centos)下搭建SVN服务器
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人,本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结! /******开始***** ...
- 记录用户操作历史命令history
我们知道可以使用history命令,查看自己的操作记录,但如果你是root用户,如何查看其它用户的操作记录呢? 其实history命令只是把当前用户目录下的~/.bash_History文件内容列 ...
- Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- HTTP监视器charles入门使用教程分享---http/s packet monitors---ubuntu installation
charles --usage http://www.cnblogs.com/chenlogin/p/5849471.html 按照Charles的提示,PC打开 chls.pro/ssl下载得到一个 ...
- Team Formation---zoj3870(异或)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5518 题意就是有n个数,如果满足a^b > MAX(a, b) ...
- linux中gdb的可视化调试
今天get到一个在linux下gdb调试程序的技巧和大家分享一下!平时我们利用gcc进行编程,进行程序调试时,观察程序的跳转等不是这么直观.都是入下的界面! 但是如果我们在编译连接时上加了-g命令生成 ...
- mysql float 浮点型
定点数类型 DEC等同于DECIMAL 浮点类型:FLOAT DOUBLE 作用:存储薪资.身高.体重.体质参数等 m,d 都是设置宽度 =============================== ...
- 'ascii' codec can't decode byte 0xc4 in position 27: ordinal not in range(128)
This error happens when I try to run d:\linux\linuxkernel\android\内核\blog\BlogBackup(v1.1)source\htm ...
- unittest框架(一)用例管理
在unittest框架的自动化接口测试中,可以用yaml文件来管理用例,这样一方面,不会像excel管理用例那么死板:另一方面,数据读取出来就是一个字典,便于取值,用起来更灵活. 首先,需要安装一个模 ...
- MapReduce中的Shuffle和Sort分析
MapReduce 是现今一个非常流行的分布式计算框架,它被设计用于并行计算海量数据.第一个提出该技术框架的是Google 公司,而Google 的灵感则来自于函数式编程语言,如LISP,Scheme ...