ruby Rails“本地时间”gem未运行JS

rjee0c15  于 2023-02-03  发布在  Ruby
关注(0)|答案(2)|浏览(121)

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

//= require local-time

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

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

//= require local-time

然后我按照规定使用宝石:

<%= 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中,"local"一词出现了0次。
gem可能有问题,但现在我假设我做错了什么,我的Ruby代码似乎可以很好地找到和使用gem,但由于某种原因,JS部分从来没有运行过。
我哪里做错了?
编辑:我使用的是Rails版本www.example.com、Ruby版本2.6.5p114和本地时间版本2.1.0。6.0.3.4, Ruby version 2.6.5p114, and local-time version 2.1.0.

abithluo

abithluo1#

Merovex的回答是一个很好的临时解决方案,但根据paulanunda对GitHub问题的评论,还有一个简单得多的方法:

$ yarn add local-time

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

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

1hdlvixo2#

我遇到了同样的问题,这似乎在Rails 6之前都是有效的。
在Rails 6中,JavaScript资产不再包含在app/assets/目录中,而是被移到了一个单独的目录app/javascript中,由Webpacker处理。这很好,但是当我想添加一些自己的自定义javascript时,没有任何明确的文档来描述应该如何操作。
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

相关问题