Ruby on rails 在RubyOnRails 4中显示图像的问题

Ruby on rails 在RubyOnRails 4中显示图像的问题,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在从事Rails 4项目,我需要存储一些用户直接上传的图像,并且我必须能够创建一个图像库,其中单个用户只能查看自己上传的图像 我正在用CArrierWave gem上传文件,一切正常。我已将默认的上载目录(公用文件夹)更改为我的自定义文件夹(/uploads/…),但我认为我无法显示图像,因为无法直接访问“uploads”文件夹,但我不想让公用文件夹上的图像导致我不希望任何人自由访问它们 我的观点代码 <div> <%= @photos.each

我正在从事Rails 4项目,我需要存储一些用户直接上传的图像,并且我必须能够创建一个图像库,其中单个用户只能查看自己上传的图像

我正在用CArrierWave gem上传文件,一切正常。我已将默认的上载目录(公用文件夹)更改为我的自定义文件夹(/uploads/…),但我认为我无法显示图像,因为无法直接访问“uploads”文件夹,但我不想让公用文件夹上的图像导致我不希望任何人自由访问它们

我的观点代码

<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
class PhotoUploader
和照片型号:

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
class-Photo
我怎样才能继续


谢谢

您需要直接从控制器提供图像(请参阅关于如何提供图像的问题:):

用法:

<% image_tag "image?image_id=154" %>


如果您不向我们展示一些代码,我们将很难为您提供帮助。另外,您将照片上传到哪里(即Amazon S3)?您是否确实尝试过检索图像?假设您只是覆盖了
store\u dir
方法来指定您的自定义文件夹,您只需像平常一样使用
retrieve\u from\u store
url
方法即可。@diasks2这更像是一个概念性的问题,不是密码问题。@graemeclean我试试methods@GraemeMcLean我一直在寻找这些方法,但我不知道如何使用它们。它们是Rails方法还是CarrierWave方法?这与我的情况不同,因为我只有本地存储的文件,我不想像代理一样,通过“成为代理”,你可以控制谁可以查看哪个图像。如果您提供任何静态url,它将对所有用户可用,因为它是静态的……如果我需要返回一系列图像,“image”方法将被调用很多次?对于您指定的每个
标记,调用一次,是的。(就像静态文件一样,每个图像调用一次)当我使用“render”方法时,Rails在哪个文件夹中搜索文件?按照你的建议,我曾经收到过“没有这样的文件或目录”的错误消息。假设我有一个文件位于:my_rails_app/app/uploads/photo/path/1/photo.jpg,我如何在render方法中引用它?