当我在生产模式下运行rails时,我将化身的默认url放入素材资源/图像中,并使其如下所示:
"/assets/" + [version_name, "image.jpeg"].compact.join('_')
它完全可以在开发模式下工作,但是在生产模式下却不能,而且我不知道为什么我还预编译了资产,但仍然希望您能提供帮助。
答案 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_path
到image_url
,image_tag
或ActionView::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
我希望这已经足够清楚并且可以解决您的问题了:)