载波未加载默认图片网址?

时间:2018-08-30 16:05:51

标签: ruby-on-rails

当我在生产模式下运行rails时,我将化身的默认url放入素材资源/图像中,并使其如下所示:

"/assets/" + [version_name, "image.jpeg"].compact.join('_')

它完全可以在开发模式下工作,但是在生产模式下却不能,而且我不知道为什么我还预编译了资产,但仍然希望您能提供帮助。

2 个答案:

答案 0 :(得分:0)

问题可能是由于/assets干扰了Rails资产管道。

请发布您的代码以更好地理解该问题

答案 1 :(得分:0)

如果您的资产路径为:

/assets/v1_image.png

然后,如果您使用以下方法,它将在开发中完全正常工作:

<img src="/assets/v1_image.png" />

由于开发资产没有通过Rails资产管道进行预编译。

但是在生产中,资产管道将编译您的资产,并使用一些md5hash对其进行标记,因此您的文件名最终将像这样:

/assets/v1_image-aee4be71f1288037ae78b997df388332edfd246471b533dcedaa8f9fe156442b.png

因此正确的使用方式应该是:

<img src="/assets/v1_image-aee4be71f1288037ae78b997df388332edfd246471b533dcedaa8f9fe156442b.png" />

但此md5哈希仍会从一个部署更改为另一个部署,因此处理此问题的方法是使用image_pathimage_urlimage_tagActionView::Helpers::AssetUrlHelper助手为您生成正确的路径,如下所示:


image_tag('v1_image.png')将返回:

<img src="/assets/v1_image-aee4be71f1288037ae78b997df388332edfd246471b533dcedaa8f9fe156442b.png" />

image_path('v1_image.png')将返回:

/assets/v1_image-aee4be71f1288037ae78b997df388332edfd246471b533dcedaa8f9fe156442b.png

image_url('v1_image.png')将返回:

http://www.example.com/assets/v1_image-aee4be71f1288037ae78b997df388332edfd246471b533dcedaa8f9fe156442b.png

我希望这已经足够清楚并且可以解决您的问题了:)