Max*_*Max 8 timezone ruby-on-rails
我把它放在Application Controller中:
before_filter :set_timezone
def set_timezone
Time.zone = current_user.time_zone
end
Run Code Online (Sandbox Code Playgroud)
但我总是得到错误:
undefined method time_zone for #<User:0xa46e358>
Run Code Online (Sandbox Code Playgroud)
而我只是不知道为什么......
我希望有人能帮帮忙
yak*_*aka 26
继Jesse的回答之后,我应该补充一点,你通常可以避免在db中添加一个新列,只需在用户模型中创建一个自定义方法,并利用cookie来获取用户的时区:
在客户端(js):
function set_time_zone_offset() {
var current_time = new Date();
$.cookie('time_zone', current_time.getTimezoneOffset());
}
Run Code Online (Sandbox Code Playgroud)
在应用控制器中:
before_filter :set_timezone
def set_timezone
min = request.cookies["time_zone"].to_i
Time.zone = ActiveSupport::TimeZone[-min.minutes]
end
Run Code Online (Sandbox Code Playgroud)
Jes*_*ott 13
马克斯-在ryandaigle.com文章你提到的链接,这个书面记录,你需要创建一个迁移添加"的time_zone"作为对用户的属性
(这是来自文章,在rails 2.x语法中)
$ script/generate scaffold User name:string time_zone:string
$ rake db:migrate
Run Code Online (Sandbox Code Playgroud)
后来
<%= f.time_zone_select :time_zone, TimeZone.us_zones %>
Run Code Online (Sandbox Code Playgroud)
这就是你的.time_zone返回method_missing的原因 - 你还没有将time_zone存储在用户身上.
归档时间: |
|
查看次数: |
15665 次 |
最近记录: |