升级到rails 3.2后,Paperclip更改图像路径

jgi*_*nta 13 ruby ruby-on-rails paperclip

升级到rails 3.2(从3.0.10开始)后,我遇到了回形针(3.0.2)的问题.

最初一张图片的路径是:

"http://localhost:3000/system/photos/94/small/AudiLogo.jpg?1335392139"
Run Code Online (Sandbox Code Playgroud)

并且在升级之后这种图像再也不会显示!但是如果我上传一张新图片,这将在页面上显示正常,但使用的新路径是:

"localhost:3000/system/products/photos/000/000/094/smal/AudiLogo.jpg?1335392139"
Run Code Online (Sandbox Code Playgroud)

升级中发生了什么?有什么解决方案可以将旧路径转换为新路径吗?

我尝试使用"rake paperclip:refresh:missing_styles",但是没有用.

回形针配置部分就是这样.

has_attached_file :photo,
        :processors => lambda { |a|
                        if a.external?
                                [:thumbnail]
                        else
                                [:thumbnail,:watermark]
                        end
                        },
        :styles => {
                :slider => { :geometry => "350x312#", :format => :jpg, :watermark_path => "#{Rails.root}/public/images/watermark.png", :position => "NorthEast" },
                :small => "100x50>",
                :medium => "200>x200",
                :thumb => "100x100>",
                :big => { :geometry => "640x480>", :format => :jpg, :watermark_path => "#{Rails.root}/public/images/watermark.png" }
                },
        :default_url => "/images/noimage.png"
Run Code Online (Sandbox Code Playgroud)

提前致谢.

小智 14

我有同样的问题.您可以通过创建config/initializers/paperclip.rb和put 等文件来解决此问题

Paperclip::Attachment.default_options.merge!(
    :path => ":rails_root/public/system/:attachment/:id/:style/:basename.:extension", 
    :url => "/system/:attachment/:id/:style/:basename.:extension"
)
Run Code Online (Sandbox Code Playgroud)


Chr*_*ian 1

假设原始路径和当前路径之间的“小”与“小”差异是一个拼写错误,另一个明显的变化是在“/photos/”后面添加了两个数字段。

".../photos/000/000/094/smal/AudiLogo.jpg?1335392139"
Run Code Online (Sandbox Code Playgroud)

我怀疑这是来自用于路径的 id_partition。您是否在其他地方设置了不同的默认路径插值?

查看 Paperclip 的代码,我看到id_partition 方法将对此负责,但仍然没有找到任何指向默认行为更改方向的文档。我没有按照 gem 中的代码来确定它是错误还是未记录的更改。