【发布时间】:2015-10-03 08:17:40
【问题描述】:
我正在使用载波上传图片。但是使用 image_uploader.rb 文件中的默认 store_dir ,它将 store_dir 附加到我的图像路径中。所以我成功地显示了我上传的图像。但是,我有一个数据库,其中包含已经存在的远程图像 url。这些远程图像 url 不会显示,因为它将 store_dir 附加到图像路径并且找不到它们。
例如: 它将“http://myapp.com/images/I/51oYEfb%2B0WL.SL160.jpg”作为“/uploads/product/productimage/1/http%3A/myapp.com/images/I/51oYEfb%252B0WL.SL160.jpg强>”
这是我的代码:
_product.html.erb
<% @products.each do |product| %>
<li>
<%= image_tag(product.productimage_url) if product.productimage? %>
</li>
<% end %>
产品.rb
class Product < ActiveRecord::Base
mount_uploader :productimage, ProductimageUploader
end
productimage_uploader.rb
class ProductimageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
我什至尝试如下 nil ,它仍然将 / 附加到图像 url:
def store_dir
nil
end
【问题讨论】:
-
我没有这方面的代码,但您的问题似乎是 Carrierwave 无法确定 url 是本地的还是远程的。如果是本地的,它可以正常加载(请记住,系统中的图像存储在某个地方) - 必须以某种方式表示远程。
-
是的,我已经为 remote_url 使用了另一列,正如@ihaztehcodez 在下面的答案中指定的那样。谢谢。
-
没问题,感谢更新!
标签: ruby-on-rails ruby