运行时Javascript中的Rails资产管道路径
我有一个JavaScript文件,它使用从rails模型生成的JSON文件,并由控制器放入页面中 在这个JSON文件中有许多节点,每个节点都有一个id,我需要获取该id并将其转换为图像路径。在开发过程中,我知道图像将在哪里,因此我可以通过do循环:运行时Javascript中的Rails资产管道路径,javascript,ruby-on-rails,asset-pipeline,manifest,assets,Javascript,Ruby On Rails,Asset Pipeline,Manifest,Assets,我有一个JavaScript文件,它使用从rails模型生成的JSON文件,并由控制器放入页面中 在这个JSON文件中有许多节点,每个节点都有一个id,我需要获取该id并将其转换为图像路径。在开发过程中,我知道图像将在哪里,因此我可以通过do循环: var imagePath = 'some/path/'+node.id+'.png'; 然而,我使用的是指纹,所以在登台和生产中,我需要一种方法来将此路径解析为指纹路径 据我所知,我需要公开一张路径地图-指纹路径,以便有效地执行以下操作: var
var imagePath = 'some/path/'+node.id+'.png';
然而,我使用的是指纹,所以在登台和生产中,我需要一种方法来将此路径解析为指纹路径
据我所知,我需要公开一张路径地图-指纹路径,以便有效地执行以下操作:
var fingerprintedImagePath = fingerprintedPathsMap[imagePath];
为了做到这一点,我需要从我的控制器或视图(在.erb标记内)访问清单或Rails存储清单的任何内容
如何访问指纹文件列表?或者有没有更好的方法让JavasScript访问只在客户端已知的资产路径。对这种方法并不完全满意,但我有以下几点: 注意:要将对象插入dom中,JavaScripts就可以访问它们 在我的控制器中:
gon.asset_host = Rails.configuration.action_controller.asset_host || ''
gon.manifest = Rails.configuration.assets.digests
在我的JavaScript中:
var manifest = gon.manifest;
var fileName = panelName+'_'+layerName+'.png';
var image_path = 'resources/comics/'+comicName+'/'+fileName;
var hosted_path = image_path;
if(gon.asset_host) {
var fingerprinted_path = manifest[image_path];
hosted_path = gon.asset_host+'/assets/'+fingerprinted_path;
}else{
hosted_path = '/assets/'+hosted_path;
}