我正在研究Rails 4项目,我需要存储一些由用户直接上传的图像,我必须能够创建一个图像库,其中单个用户只能查看他们自己的上传。
我使用CArrierWave gem上传文件,并且它运行良好。我已将默认上传目录(公共文件夹)更改为我的自定义文件夹(/ uploads / .....),但我认为我无法显示图像导致& #39;上传'文件夹无法直接访问,但我不想让公共文件夹上的图像因为我不希望任何人自由访问它们。
我的观点代码
<div>
<%= @photos.each do |p| %>
<div>
<%= image_tag (p.path_url) %>
</div>
<% end %>
</div>
我的CarrierWave上传器类:
class PhotoupUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"../app/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.album_id}"
end
和照片模型:
class Photo < ActiveRecord::Base
belongs_to :album
attr_accessible :legend, :path
mount_uploader :path, PhotoupUploader
end
我该怎么办?
谢谢
答案 0 :(得分:0)
您需要直接从控制器提供图片(请参阅以下问题:Rendering an image):
def image
render :text => open(File.join('/uploads', user_id, params[:image_id], "rb").read
end
用法:
<% image_tag "image?image_id=154" %>