You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pin local-time后无法在time_tag中显示相对时间的技术求助

嘿,我明白你对照教程反复检查却没解决问题的挫败感——别担心,咱们一步步来搞定这个Local-Time相对时间不生效的问题:

解决Local-Time相对时间不显示的问题

你已经通过./bin/importmap pin local-time完成了包的注册,但这只是第一步,Local-Time还需要被导入并初始化才能工作,我们从最关键的步骤开始:

1. 在前端代码中导入并启动Local-Time

打开app/javascript/application.js,添加以下代码:

import LocalTime from "local-time"
LocalTime.start()

这一步是核心——importmap pin只是告诉Rails这个包的CDN地址,但只有在JS里导入并调用start(),Local-Time才能监听页面上的data-local属性,把绝对时间转换成相对时间。

2. 确认time_tag的属性配置正确

你的time_tag代码看起来没问题,但可以再核对一下格式:

Posted: <%= time_tag post.created_at, "data-local": "time-ago" %>

time-ago确实是Local-Time用来渲染相对时间的合法取值,只要post.created_at是有效的时间对象(不是nil或字符串),这部分就没问题。

3. 检查浏览器控制台的错误提示

打开浏览器开发者工具(按F12),切换到Console标签页,看看有没有类似ReferenceError: LocalTime is not defined的错误:

  • 如果出现这个错误,说明导入没生效,可以做这几件事:
    • 确认你已经保存了application.js的修改
    • 重启Rails服务器(修改importmap或application.js后,有时候需要重启才能生效)
    • 强制刷新页面(Ctrl+Shift+R),清除浏览器缓存

4. 验证importmap配置有效性

你的importmap.rb里的配置:

pin "local-time", to: "https://ga.jspm.io/npm:local-time@2.1.0/app/assets/javascripts/local-time.js"

这个地址是有效的,版本也兼容,不需要调整。

最后测试

完成上面的步骤后,重启服务器,强制刷新页面,应该就能看到预期的相对时间(比如“5分钟前”)了。如果还是不行,可以先创建一个极简的测试页面,只包含time_tag代码,排除富文本功能或其他代码的干扰,确认Local-Time本身能正常工作。

内容的提问来源于stack exchange,提问作者roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:27:28