Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行时Javascript中的Rails资产管道路径_Javascript_Ruby On Rails_Asset Pipeline_Manifest_Assets - Fatal编程技术网

运行时Javascript中的Rails资产管道路径

运行时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

我有一个JavaScript文件,它使用从rails模型生成的JSON文件,并由控制器放入页面中

在这个JSON文件中有许多节点,每个节点都有一个id,我需要获取该id并将其转换为图像路径。在开发过程中,我知道图像将在哪里,因此我可以通过do循环:

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;
}