【问题标题】:Paperclip change images path after upgrade to rails 3.2升级到 Rails 3.2 后回形针更改图像路径
【发布时间】:2012-06-07 03:54:17
【问题描述】:

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

原来一张图片的路径是:

"http://localhost:3000/system/photos/94/small/AudiLogo.jpg?1335392139"

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

"localhost:3000/system/products/photos/000/000/094/smal/AudiLogo.jpg?1335392139"

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

我尝试使用“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"

提前致谢。

【问题讨论】:

  • 新 uri 的“小”段是错字吗?
  • 你是升级回形针还是只升级 Rails?
  • 您能否发布相关模型中处理附件的回形针选项的部分?
  • 在我看来,它缺少的只是一开始的协议字符串 - 你不能自己添加吗?
  • 我编辑了问题,非常感谢

标签: ruby-on-rails ruby paperclip


【解决方案1】:

我遇到了同样的问题。您可以通过创建类似 config/initializers/paperclip.rb 的文件并放置

来解决此问题
Paperclip::Attachment.default_options.merge!(
    :path => ":rails_root/public/system/:attachment/:id/:style/:basename.:extension", 
    :url => "/system/:attachment/:id/:style/:basename.:extension"
)

【讨论】:

  • 是否有任何脚本或 rake 任务将文件从旧位置移动到新位置?
【解决方案2】:

我刚刚进行了类似的升级,并以这种方式解决了我的问题:

  has_attached_file :image,
    :url => "/images/photos/:id/:basename_:style.:extension",
    :path => ":rails_root/public/images/photos/:id/:basename_:style.:extension",

【讨论】:

  • 正如@heavysixersays 所说,像这样设置 :path 选项将强制 Paperclip 像以前一样运行。我会尝试检查错误的原因
  • 谢谢!这是一个强制路径的选项,我会工作,但可能存在一种自动进行迁移的方法,我的意思是。
  • @jgiunta 我认为没有办法自动迁移。你可以阅读this other question关于这个
【解决方案3】:

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

".../photos/000/000/094/smal/AudiLogo.jpg?1335392139"

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多