【发布时间】:2014-03-25 22:35:34
【问题描述】:
我将我的生产 rails 3 应用设置为在 Heroku 上运行时使用 Fog/S3 进行存储。在此过程中,我对/config/initializers/carrierwave.rb 进行了一些更改。这是它的样子:
CarrierWave.configure do |config|
if Rails.env.test? || Rails.env.development?
config.root = Rails.root
config.storage = :file
else
config.storage = :fog
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => ENV['MY_ID'], # required
:aws_secret_access_key => ENV['MY_KEY'] # required
}
config.fog_directory = 'my-app' # required
config.fog_public = false # optional, defaults to true
#config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
end
这是我的image_uploader:
class ImageUploader < CarrierWave::Uploader::Base
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
上传在生产环境中运行良好。正在开发中将文件上传到正确的目的地,但在查看上传的图像时出现此错误:
ActionController::RoutingError (No route matches [GET] "/uploads/vendor/image/24/StoreB.png"):
我不确定如何解决这个问题。我的上传器中是否缺少某些内容?请帮忙?如果您需要更多信息,请告诉我。提前致谢!
编辑 抛出错误的代码示例:
<% @stores.each do |s| %>
<div class="row">
<div class= "col-xs-9 horz-cent">
<%= link_to image_tag("#{s.vendor.image}"), user_show_store_path(s) %>
</div>
</div>
<% end %>
【问题讨论】:
-
您是否在
production环境或development中遇到错误。另外,分享您尝试查看图像的代码还是直接在地址栏中尝试/uploads/vendor/image/24/StoreB.png路径? -
仅在开发中。在上面添加了一个代码示例。
-
如果您的文件在开发环境中上传成功,那么请您分享
absolute path。 -
绝对路径是指文件的实际位置吗?如果是这样:application_name/uploads/vendor/image/24/StoreB.png
-
绝对路径我的意思是
application_name/.../uploads/vendor/image/24/StoreB.png