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();
我正在尝试使用 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();