我需要些帮助。我使用rails 5和载波上传图像。我的问题是,图像保存,但不会显示,我得到一个没有路线匹配得到……我将图像存储在Rails.root的上传文件夹中,因为我不希望它们保存在公共dir中。
image_uploader.rb
def store_dir
"uploads/#{model.user_id}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
carrier_wave.rb
require 'carrierwave/orm/activerecord'
require 'carrierwave'
CarrierWave.configure do |config|
config.root = Rails.root
end
这是我在日志中看到的错误:
Started GET "/uploads/2/uitem/image/26/A_penrose-small.jpg" for ::1 at 2016-10-29 16:06:27 +0200
ActionController::RoutingError (No route matches [GET] "/uploads/2/uitem/image/26/A_penrose-small.jpg"):
任何帮助都将是非常感谢的,我一直在寻找,并没有找到解决办法。谢谢
发布于 2016-10-29 15:41:35
找不到图像的原因是web服务器的根目录是Rails应用程序的公共目录,所以它在“public /uploads/2/.”下面查找图像。
由于web服务器找不到它将请求传递给Rails堆栈的文件,而且没有定义匹配的路由,所以它会抛出一个错误。
如果您将图像上传根目录更改为公共目录,它应该会像您预期的那样工作。
更新
如果您不想将图像放在公共目录下,您可以创建一个路由和控制器操作来服务这些图像。您可以在控制器操作中使用send_file方法。看看这个问题:
https://stackoverflow.com/questions/40319938
复制相似问题