【问题标题】:Rails Asset Pipeline Paths In Runtime Javascript运行时 JavaScript 中的 Rails 资产管道路径
【发布时间】:2013-08-17 15:48:33
【问题描述】:

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

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

var imagePath = 'some/path/'+node.id+'.png';

但是我正在使用指纹,所以在暂存和生产中我需要一种方法来将此路径解析为指纹路径。

据我所知,我需要公开路径图 - 指纹路径,以便我可以有效地执行以下操作:

var fingerprintedImagePath = fingerprintedPathsMap[imagePath];

为了做到这一点,我需要访问清单或 Rails 将清单存储在我的控制器或视图中(在 .erb 标记内)。

如何访问指纹文件列表?或者有没有更好的方法让 JavaScript 访问只有客户端知道的资产路径。

【问题讨论】:

    标签: javascript ruby-on-rails asset-pipeline manifest assets


    【解决方案1】:

    对这种方法并不完全满意,但这是我所拥有的:

    注意:Gon gem 将对象插入到 dom 中,以便 JavaScript 可以访问它们。

    在我的控制器中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2013-07-17
      • 2014-03-08
      • 2013-12-02
      • 2016-08-15
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多