URI不匹配Rails在生产中的资产URL中生成MD5摘要,但控制器GET是非MD5 URL

时间:2012-10-01 13:36:27

标签: heroku ruby-on-rails-3.2 html5-video asset-pipeline

我有一个带有一两页使用html5视频标记的Rails应用程序,以及相应的Rails video_tag()方法在页面上显示视频。

我添加了

<%= video_tag "car_circle.mp4", width: "640", height: "500", controls: true %>

到视图中的html.erb文件。

Rails 3.2在/ public目录中查找视频,因此我将我的视频添加到名为 public / videos 的文件夹中。

为了将此文件夹添加到资产管道,我将此行添加到 application.rb

  config.assets.paths << "#{Rails.root}/public/videos"

这部分有效。视频资产会进行预编译,其中带有视频的页面实际上会加载。但是,视频本身却没有。这是因为,虽然可以在各自的网址上查看视频,例如 /videos/car_circle.mp4 ,但视频的视频页面上的视频的URI应该是加载 /videos/car_circle-4e5f6739c10827a6fc3d479d1ac5c275.mp4

这是MD5摘要Rails添加到生产中的URI。我需要我的视频URI来匹配视频所在页面上的摘要URI。

到目前为止,我已尝试通过设置

来禁用摘要功能
 config.assets.digest = true

为假。但是不推荐这样做,它无论如何都会让我的应用崩溃。

有关如何正确获取资产的任何建议吗?显然这只是生产中的一个问题,这是Rails默认使用digest'ed URI的唯一地方。非常感谢。

2 个答案:

答案 0 :(得分:2)

尝试使用普通的html元素声明,如下所示:

<video width="640" height="500" control="controls">
    <source src="../../../public/videos/car_circle.mp4" type="video/mp4">
</video>

即使.erb文件仍然接受普通的html声明,该声明应该不受任何Rails的更改。

答案 1 :(得分:0)

使用普通html作为视频标签也对我有用。

我将视频文件保存在公开/视频中

并将html引用为

<video autoplay="autoplay" loop="loop" src="/videos/test.mp4">

这对我来说很好。