我有一个带有方法的模型,该方法可将网址返回给人的头像,如下所示:
def avatar_url
if self.avatar?
self.avatar.url # This uses paperclip
else
"/images/avatars/none.png"
end
end
我正在升级到3.1,因此现在需要通过 Assets 管道引用硬编码的无图像。在 Controller 或 View 中,我只是将其包装在
image_path()
中,但模型中没有该选项。如何生成图像的正确网址?
最佳答案
我努力将其正确设置了一段时间,所以我想在这里发布答案。尽管以上内容适用于标准默认图像(即每种回形针样式都相同),但是如果您需要多种默认样式,则需要使用其他方法。
如果您想让默认url与 Assets 管道和 Assets 同步保持一致,并希望每种样式使用不同的默认图像,则需要生成没有指纹的 Assets 路径,否则会出现很多AssetNotPrecompiled错误。
像这样:
:default_url => ActionController::Base.helpers.asset_path("/missing/:style.png", :digest => false)
或在回形针选项中:
:default_url => lambda { |a| "#{a.instance.create_default_url}" }
然后是模型中具有回形针附件的实例方法:
def create_default_url
ActionController::Base.helpers.asset_path("/missing/:style.png", :digest => false)
end
在这种情况下,您仍然可以使用插值(:style),但必须关闭 Assets 指纹识别/摘要。
只要您同步不包含摘要的 Assets 和包含摘要的 Assets ,这一切似乎就可以正常工作。
关于ruby-on-rails - 如何从模型引用 Assets 管道中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7267651/