具体来说,我正在尝试添加一个视频播放器到我的web应用程序..
javascript manifest文件中有:
//= require bitmovinplayer.min
//= require bitmovinplayer-core.min
//= require bitmovinplayer-controls.min
和在CSS清单中:
@import "bitmovinplayer-core.min";
@import "bitmovinplayer-controls.min";
在资产编译后查看连接的.js文件时,我看到这些文件被正确地包含在那里。
然而,当尝试实例化一个玩家时,我在控制台中看到404:
vendor-d8cd0ac....js:38 GET https://myapp.com/assets/bitmovinplayer-core.min.css
vendor-d8cd0ac....js:38 GET https://myapp.com/assets/bitmovinplayer-core.min.js
所以显然这个播放器代码是添加html与src属性,是指向的文件是不可访问的-因为他们是可用的主js &从manifest中生成的CSS文件
所以我认为通过手动添加这些文件到资产预编译数组,这将解决问题.............
config.assets.precompile += [
'bitmovinplayer-core.min.css',
'bitmovinplayer-core.min.js',
]
然而,在做了这个和预编译之后,我仍然不能转到:
/资产/bitmovinplayer-core.min.css
我必须去:
/资产/bitmovinplayer core.min - 78 b88b860ccc407fd131639914ecd692.css
这不好…我需要能够访问这个资产没有哈希在url。
我该怎么做?
这里的问题是,每当Rails通过资产管道预编译资产时,它都会向文件附加一个散列以改进缓存。由于bitmovin-player期望这些文件在默认情况下以某种方式命名,因此它将遇到404错误。
然而,有一个配置设置可以让你重写bitmovin-player将从这里加载这些文件的路径。
location : {
html5 : '<%= asset_path('bitmovinplayer-core.min.js') %>',
css : '<%= asset_path('MY_CSS_FOLDER/bitmovinplayer-core.min.css') %>',
flash : '/bitmovinplayer.swf',
vr : '<%= asset_path('bitmovinplayer-vr.min.js') %>',
ctrls : '<%= asset_path('MY_JS_FOLDER/bitmovinplayer-controls.min.js') %>',
ctrls_css: '<%= asset_path('MY_CSS_FOLDER/bitmovinplayer-controls.min.css') %>'
}
不幸的是,目前没有办法告诉播放器,所有的文件捆绑在一起成一个,它不应该重新加载任何js/css。因此,在此之前,您需要将每个单独的文件添加到config.assets.precompile
列表中。
如果你真的不需要使用自托管播放器,我昨天写了一个Rails gem,使嵌入和配置bitmovin-player相当容易。你可以在GitHub上查看。我正在考虑将自托管选项添加到gem中-但目前没有时间去做。(如果您删除添加到页面头部的<%= bitmovin_player_script %>
,则嵌入播放器的助手仍然有效。