我有一个支持Carrierwave的应用程序。我甚至可以做一些像 @product.image.url 这样的事情,它会给我存储图像的 url 的路径。
但是,当我浏览到产品#show(即 http://localhost:3000/products/1.xml)时,它正确显示除图像以外的所有内容。
在控制台中,@product.image.url 返回:
"https://bucket_name.s3.amazonaws.com/uploads/products/2/prod1.jpg"
图像仅显示名称和扩展名。不是路径。这正常吗?
例如,xml 如下所示:
product>
<attachment>prod1.jpg</attachment>
<cached-slug>adsfsadf</cached-slug>
<category-id type="integer">1</category-id>
<company-id type="integer">1</company-id>
<created-at type="datetime">2011-05-10T05:10:35Z</created-at>
<description>description here</description>
...
是的,我认为 Carrierwave 正在动态生成 url(在方法内),因此您可以更改或覆盖其计算方式。
format.xml { render :xml => @product.to_xml(:include => {:attachment => {:only => :url}}) }
编辑:为我工作:
format.xml { render :xml => @product.to_xml(:except => :attachment, :methods => :attachment_url) }