我有一个JavaScript文件,它使用从rails模型生成的JSON文件,并由控制器放入页面。
在这个JSON文件中有许多节点,每个节点都有一个id,我需要将其转换为图像路径。在开发中,我知道图像将在哪里,所以我可以遍历do:
var imagePath = 'some/path/'+node.id+'.png';
但是我使用的是指纹识别,所以在分段和制作时我需要一种方法来解决这条指纹到路径的路径。
据我所知,我需要公开一个路径图 - 指纹路径,这样我才能有效地做这样的事情:
var fingerprintedImagePath = fingerprintedPathsMap[imagePath];
为了做到这一点,我需要访问清单或任何Rails存储清单,从我的控制器或视图中(在.erb标记内)。
如何访问指纹文件列表?或者是否有更好的方法可以让JavasScript访问仅在客户端知道的资产路径。
答案 0 :(得分:1)
对这种方法并不完全满意,但这就是我所拥有的:
注意:Gon gem将对象插入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;
}