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

Rails中public目录下字体文件引入及路径问题排查

Rails项目public目录下字体文件路径修复方案

问题原因

Rails的public目录是静态资源的根目录,浏览器请求静态资源时会从网站根路径开始解析。你当前使用的相对路径可能因CSS文件的加载上下文(比如通过嵌套路由引用CSS)导致浏览器无法正确定位到字体文件。

解决方法

方法一:使用绝对路径(最直接可靠)

在url()中添加开头的斜杠,让浏览器直接从网站根目录(对应Rails的public目录)请求字体文件:

@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

方法二:用Rails asset辅助方法(适配多环境)

如果你的CSS文件是通过ERB渲染的(重命名为font.css.erb),可以使用Rails内置的asset_path方法生成适配不同环境的路径:

@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(<%= asset_path('ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2') %>) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

验证步骤

修改后刷新页面,打开浏览器开发者工具的网络面板,查看字体文件的请求状态:

  • 状态码为200表示加载成功
  • 若仍失败,检查文件名大小写(Linux服务器区分大小写)、public目录权限是否正确

内容的提问来源于stack exchange,提问作者Bình Trương

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:22:12