【问题标题】:How to connect/link Javascript data to rails methods?如何将 Javascript 数据连接/链接到 rails 方法?
【发布时间】:2021-03-08 03:08:08
【问题描述】:

我正在编写一个自定义 DateTime 方法来获取 current web viewer 的时区并将所有时间视图设置为他/她的时区。

我如何获得本地时区

# index.html.erb

<%= get_time( getTimeZone(), entry.created_at) %>  # getTimeZone() => "Asia/Shanghai", wrong usecase
<%= get_time("Asia/Shanghai", entry.created_at) %>  # works like charm
 
<script>
     function getTimeZone() {
        return Intl.DateTimeFormat().resolvedOptions().timeZone
    }
</script>

下面我简单地将数据库UCT时间转换为用户本地时区,然后计算ago时差。

# application_helper.rb
def get_time(user_zone, created_at)
    user_now = Time.find_zone(user_zone).now
    created_at_local = created_at.in_time_zone(user_zone)

    difference = user_now - created_at_local
    if 60 > difference
      difference.round.to_s + "s"
    elsif 3600 > difference
      (difference / 1.minute).round.to_s + "m"
    elsif 86400 > difference
      (difference / 1.hour).round.to_s + "h"
    else
      created_at_local.strftime("%b %d, %Y")
    end
  end

如何将两者联系起来?或者我该如何在 JS 中实现 rails 方法?


我刚刚意识到 rails 会避开正斜杠??我认为这只是路线上的特殊情况。我尝试了所有形式的替代品,但都不起作用。

"Asia/Shanghai" => ""

有位移吗?

【问题讨论】:

    标签: javascript ruby ruby-on-rails-6 ruby-3


    【解决方案1】:

    您可以使用 JavaScript 将 TimeZone 保存到 cookie,然后在 Rails 中读取 cookie 以获取 TimeZoneExample code

    还有一个名为 Local Time 的 gem,您可能想看看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2021-05-25
      • 2015-09-25
      • 2012-11-20
      • 1970-01-01
      相关资源
      最近更新 更多