Ruby on rails 4 Rails引用Rails 4和CDN模型中的资产

Ruby on rails 4 Rails引用Rails 4和CDN模型中的资产,ruby-on-rails-4,model,cdn,assets,Ruby On Rails 4,Model,Cdn,Assets,我在一个模型中有一个方法,它以字符串形式返回图像URL,例如:“assets/myImage.png”,这在没有CDN的生产环境中运行良好,正在为图像提供服务 使用CDN(Cloudfront)只提供带有指纹的文件,或者我已经读过了。因此,当我打开我的谷歌控制台时,它会显示“assets/myImage.png”,但不会显示指纹版本,因此它显然不会显示图像 简而言之:我需要知道如何使用helper方法来返回模型中图像的指纹版本 任何帮助都会很好 您应该能够从ruby aws sdk gem获取U

我在一个模型中有一个方法,它以字符串形式返回图像URL,例如:“assets/myImage.png”,这在没有CDN的生产环境中运行良好,正在为图像提供服务

使用CDN(Cloudfront)只提供带有指纹的文件,或者我已经读过了。因此,当我打开我的谷歌控制台时,它会显示“assets/myImage.png”,但不会显示指纹版本,因此它显然不会显示图像

简而言之:我需要知道如何使用helper方法来返回模型中图像的指纹版本


任何帮助都会很好

您应该能够从ruby aws sdk gem获取URL

这是你的文件


更新:这个答案是错误的。请看下面我的不同答案。

我实际上认为我上面的答案行不通。相反,请尝试使用instite production.rb

config.action\u controller.asset\u host=“d24xjtg100euk4.cloudfront.net”

这应该将CDN url附加到所有rails帮助程序(如image\u helper)中

您还可以滚动您自己的自定义助手,该助手获取资产位置并将其与CDN url连接起来

根据这篇博文:


编辑:使用链轮辅助工具方法在下面发布了另一个答案。

我相信您可以使用以下方法访问链轮辅助工具:

  • self.class.helpers.asset\u路径('application.css')
  • self.class.helpers.asset\u digest\u path('application.css')
这两种方法都是获取Sprocket用于在生产中对资产进行指纹识别的助手的落后方法。这样行吗


基于这样的回答,我不明白你的问题。是的,我已经在prodcution.rb上设置了。除我试图从模型中的方法返回的图像外,所有图像都显示正常。我的方法如下:
def myImage image_path(“myImage.png”)end
当我打开开发人员工具的网络选项卡时。。。它声明CDN试图提供的图像是myImage.png,当然这在我的CDN中并不存在。。存在的是“myImage-.png”指纹来自Rails资产管道,对吗?我想我找到了答案。看下面,嘿!我终于让它工作了,谢谢你的回答!!查看:ActionController::Base.helpers.asset\u路径(“”)已工作!:你给我的语法,我不太清楚为什么不起作用!但是谢谢你,很乐意帮忙!这是我的第一个答案:)祝你好运@gracegimon!