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

Rails Web应用无法播放.wav文件:RoutingError/404错误

Rails 7中播放assets目录WAV文件的解决方案

核心问题分析

你遇到的404错误是因为asset_path的路径写法错误,导致生成的URL指向网站根目录而非assets编译后的正确路径,同时音频文件夹可能未被asset pipeline正确识别。

具体修复步骤

1. 修正asset_path的路径写法

去掉模板中路径开头的斜杠,Rails的asset_path会自动基于assets目录查找文件:

<audio src="<%= asset_path('audios/opening.wav') %>">
  Browser not compatible
</audio>

带开头斜杠的/audios/opening.wav会让Rails直接从网站根目录查找,而非assets编译后的带哈希值路径(比如/assets/audios/opening-xxxxxx.wav)。

2. 配置asset pipeline识别音频资源

在config/initializers/assets.rb中添加以下配置,确保Rails能识别audios目录并预编译WAV文件:

# 将音频目录加入asset搜索路径
Rails.application.config.assets.paths << Rails.root.join('app', 'assets', 'audios')
# 让Rails预编译WAV格式文件
Rails.application.config.assets.precompile += %w( *.wav )

3. 开发环境asset服务检查(可选)

如果开发环境仍有问题,确认config/environments/development.rb中的配置:

# 开启asset调试模式
config.assets.debug = true
# 启用静态文件服务
config.public_file_server.enabled = true

4. 处理浏览器自动播放限制

注意浏览器的自动播放策略:多数浏览器不允许页面加载后直接自动播放音频,必须通过用户交互(如点击按钮)触发play()方法。示例代码:

document.querySelector('#play-btn').addEventListener('click', () => {
  document.querySelector('audio').play();
});

验证方法

修改后重启Rails服务器,查看页面源码中audio标签的src属性,应该是类似/assets/audios/opening-xxxxxxxxxxxx.wav的路径,而非/audios/opening.wav,此时即可正常加载音频文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:45:28