在RubyOnRails 4中显示图像的问题

时间:2014-03-29 15:12:10

标签: ruby-on-rails ruby ruby-on-rails-4

我正在研究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

我该怎么办?

谢谢

1 个答案:

答案 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" %>