Rails 'local-time' gem 不是 运行 JS

Rails 'local-time' gem not running JS

我正在尝试使用 Basecamp 的 local-time gem。在自述文件之后,我添加了

//= require local-time

到我的 app/assets/config/manifest.js,它现在看起来像这样:

//= link_tree ../images
//= link_directory ../stylesheets .css

//= require local-time

然后我按规定使用gem:

<%= local_time(comment.created_at) %>

根据自述文件,呈现

<time data-format="%B %e, %Y %l:%M%P"
      data-local="time"
      datetime="2013-11-27T23:43:22Z">November 27, 2013 11:43pm</time>

自述文件还声称 JavaScript,即客户端会将其转换为:

<time data-format="%B %e, %Y %l:%M%P"
      data-local="time"
      datetime="2013-11-27T23:43:22Z"
      title="November 27, 2013 6:43pm EDT"
      data-localized="true">November 27, 2013 6:43pm</time>

但我可以看出这不会发生在我身上。 local_time 生成的标记在 DOM.

中保持不变

事实上,在我的浏览器接收到的编译 application.js 中,“本地”一词出现了 0 次。

gem 可能有问题,但现在我假设我做错了什么。我的 Ruby 代码似乎可以很好地查找和使用 gem,但由于某种原因,JS 部分从未运行。

我做错了什么?

编辑:我正在使用 Rails 版本 6.0.3.4、Ruby 版本 2.6.5p114 和本地时间版本 2.1.0。

我运行陷入同样的​​问题。这似乎一直有效到 Rails 6.

In Rails 6, JavaScript assets are no longer included with the app/assets/ directory and instead have been moved into a separate directory app/javascript handled by Webpacker. That's great, but when I wanted to add some custom javascript of my own, there wasn't any clear documentation that described how it should be done.

https://dev.to/morinoko/adding-custom-javascript-in-rails-6-1ke6

在我的 /app/javascript 文件夹中,我创建了一个子文件夹 /app/javascript/helpers。在该文件夹中,我直接从 GH repo 放置了 local-time.js。然后,我将以下代码添加到 /app/javascript/packs/application.js

import LocalTime from 'helpers/local-time'
LocalTime.start()

在我撰写本文时,我认为我是五分钟前做的

<p>Time Ago: <%= local_time_ago(Time.now) %></p>

阅读

Time Ago: 5 minutes ago

Merovex 的回答是一个很好的临时解决方法,但根据 paulanunda's comment on the GitHub issue,有一个更简单的方法:

$ yarn install local-time

不要弄乱 manifest.js 文件,只需将以下内容放入 application.js 文件中:

import LocalTime from 'local-time';
LocalTime.start();