How to change how ActiveAdmin displays time (every time)

前端 未结 3 1843
自闭症患者
自闭症患者 2021-02-05 13:59

Since the default time in the database is in utc, I wanted to be able to still display it in the users correct time. To do this I had to take column :created_at and

相关标签:
3条回答
  • 2021-02-05 14:32

    I've found there are two ways to do this:

    1. Javascript

    This is the easier method because it is very short and doesn't involve adding a db field. It works because it uses the users timezone from their browser. This answer gives insight on how to do this.

    2. From the Database

    This process can be found in this railscast.

    Essentially store a time_zone field in the users table. Then use an before_filter (although an around_filter might be a better idea) to set the timezone in the controller.

    before_filter :set_time_zone
    
    private
    def set_time_zone
      Time.zone = current_user.time_zone if current_user
    end
    
    0 讨论(0)
  • 2021-02-05 14:38

    You can target just ActiveAdmin by telling it to always use a particular filter in config/initializers/active_admin.rb , by adding a line like this:

    config.before_action :set_admin_timezone
    

    (or config.before_filter :set_admin_timezone for versions of Rails before Rails 4)

    Then in your ApplicationController, you can just define the method set_admin_timezone, and ActiveAdmin will use it. For example:

    def set_admin_timezone
      Time.zone = 'Eastern Time (US & Canada)'
    end
    

    You should be able look up the current admin user in that method (in order to get their particular timezone), but I haven't tried that.

    0 讨论(0)
  • 2021-02-05 14:42

    So for my understanding, you need two things:

    1. Localtime/Timezone

      You can achieve this by set the right timezone of your rails app, the active_admin will pick up that by default. For example, in your rails config file(config/application.rb):

      config.time_zone = 'Eastern Time (US & Canada)'

    2. Default time format

      You can refer this Change default date formatter in active admin

    Good luck~

    0 讨论(0)
提交回复
热议问题