5

我不确定我是否了解 Paperclip 的工作原理,但据我所知,保存上传的默认位置是 /public 文件夹。当我在我的开发中上传我的照片时,它们会正确显示在(我可以在文件结构中打开它们):

/public/bookmarks/:id/:style.:extension

但是,当我这样做时bookmark.photo.url,我会得到类似的东西:

/system/bookmarks/thumbs/000/000/042/original/filename.png?1362768439

这是我的bookmark.rb

has_attached_file   :photo,
                        :styles => { :medium => ["512x512>", :jpg], :thumb => ["200x200#", :jpg] }
                        :default_url => "public/bookmarks/default/:style.png",
                        :path => "assets/content/bookmarks/:id/:style.:extension"

我在这里错过了什么吗?Paperclip 不是要为我处理这些东西,还是我的配置有问题?

更新

如果我在第一个答案中添加:pathand ,我会得到::url

<img src="/assets/bookmarks/44/original.jpg?1362775508">

而我应该得到:

<img src="/bookmarks/44/original.jpg?1362775508">

但是,如果我注释掉该:url选项,而不是得到:

这是默认大小

这是默认的未找到图像大小,我得到:

在此处输入图像描述

这个,与我在文件系统上的图像宽度相同,但高度错误,没有找到。这发生在具有干净缓存的 Chrome 和 Safari 中。当我转到 URL 时,我得到一个 404。我还可以确认图像已正确存储在文件系统上并且可以从后端查看。

4

2 回答 2

1

你描述的行为有点奇怪。我建议您以类似于以下方式设置 :url 和 :path :

url: '/:class/:id/:style.:extension',
path: ':rails_root/public:url'

这意味着图像将存储在:

"#{Rails.root}/public/bookmarks/:id/:style.:extension"

该 URL 将为您提供如下信息:

/bookmarks/bookmarks/1/thumbs.png

请注意,您可以config.paperclip_defaults在“application.rb”中执行此操作,因此您不必在每个模型上都执行此操作。如果您想要不同的路径或存储,您可以在“production.rb”上覆盖它,例如:

  config.paperclip_defaults = config.paperclip_defaults.merge({
    storage: :s3,
    path: 'project_name/public:url'
  })
于 2013-03-08T19:37:57.857 回答
0

我最近也发生了同样的事情。我得到了 404,因为我有:style而不是:stylesin/app/models/mymodel.rb

class Pin < ActiveRecord::Base
    belongs_to :user
    has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
    validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end
于 2015-11-20T18:12:52.583 回答