Ruby on rails Rails中的音频资源不会带来路由匹配

Ruby on rails Rails中的音频资源不会带来路由匹配,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,我正在尝试在rails中使用音频文件。我在app\assets\下创建了一个文件夹audios。我希望使用资产预编译,这样我就不必将文件放在app\public 现在我有点累了 ActionController::RoutingError (No route matches [GET] "/audios/audio_file.wav") 如果我将url从url/audios/audio_file.wav更改为url/assets/audio_file.wav,它会工作。我怎样才能解决这个问题?

我正在尝试在rails中使用音频文件。我在
app\assets\
下创建了一个文件夹
audios
。我希望使用资产预编译,这样我就不必将文件放在
app\public

现在我有点累了

ActionController::RoutingError (No route matches [GET] "/audios/audio_file.wav")

如果我将url从
url/audios/audio_file.wav
更改为
url/assets/audio_file.wav
,它会工作。我怎样才能解决这个问题?正确的方法是什么?

首先,如果您还没有意识到:您新的
应用程序/资产/音频
文件夹已在加载路径中。。。您只需要重新启动服务器,链轮就可以将其拾取

开发中,可通过相关url获得资产:
/assets/

例如,假设您的wav文件位于文件系统中的
/app/assets/audios/audio_file.wav
,则可以通过浏览器中的相对url
/assets/audio_file.wav
访问该文件。这是因为Sprockets/devrails知道在查找资产时搜索
/app/assets
文件夹及其子目录

在生产中,资产预编译(通常)在部署时进行。此时,您的wav文件将被复制到例如
/public/assets/audio_file-.wav
,并可通过相关url访问:
/assets/audio_file-.wav

由于开发和生产之间使用的命名样式不同,所以任何时候您想要引用资产时,都应该使用助手方法(即使在CSS中也是如此!)。也就是说,生产包括MD5指纹,而开发不包括。但只要您使用助手,就不必担心这些问题:

  • 对于图像:
    ——给定一个位于文件系统上
    /app/assets/images/homes/logo.png
    中的图像文件
  • 对于非标准资产,例如音频文件:
    ,它将生成
    /assets/audio_file.wav
    的相对路径