【问题标题】:How to change Rails app time zone setting based on user's input?如何根据用户的输入更改 Rails 应用程序时区设置?
【发布时间】:2013-07-31 21:05:32
【问题描述】:

我有一个用户模型,它允许用户提供自己的时区。用户可以使用time_zone_select 选择自己的时区。所以我们会在数据库中存储Pacific Time (US & Canada) 之类的东西。

我的 Rails 3 应用程序默认设置是使用Pacific Time (US & Canada)。所以所有的时间显示都在这个时区。

我可以根据用户时区更改时间显示吗?例如,用户 A 会看到他的时区 Central Time (US & Canada) 中显示的所有时间,而用户 B 会看到 London 中的所有时间。

谢谢大家。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 timezone


    【解决方案1】:

    controllers/application.rb

    before_filter :set_user_time_zone
    
    private
    
    def set_user_time_zone
      Time.zone = current_user.time_zone if logged_in?
    end
    

    来自railscast

    【讨论】:

      【解决方案2】:

      首先,您需要在您的用户表中添加一列,以保留该用户选择的时区(user.timezone 应该没问题)。 在表单中,您需要使用 ActiveSupport 的#time_zone_select 来允许用户选择他们想要的时区。

      最后,您需要在 ApplicationController 中使用 before 过滤器将当前会话的时区设置为用户的特定时区。

      这里是迁移、部分视图和应用程序控制器过滤器的要点:

      https://gist.github.com/eladmeidar/6121183

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-17
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2020-08-13
        • 1970-01-01
        • 2021-11-17
        相关资源
        最近更新 更多