由于缩略图,回形针裁剪原始图像

时间:2014-07-28 14:53:48

标签: ruby-on-rails ruby paperclip

所以我要做的就是为缩略图设置一个中央裁剪的图像,然后保持原始图像不变,这样我就可以点击缩略图并将用户带到原始图像。

所以在我的模型中我有:

has_attached_file :image,
  default_url: "/assets/missing.png",
  url: "s3_domain_url",
  storage: :s3,
  s3_credentials: "#{Rails.root}/config/aws-#{Rails.env}.yml",
  s3_permissions: 'authenticated-read',
  path: "/users/:id/images/:basename.:extension",
  s3_server_side_encryption: :aes256,
  styles: { thumb: "200x200#" }

def s3_url(style = nil, expires_in = 30.seconds)
  if image.exists?
    image.s3_object(style).url_for(:read, :secure => true, :expires => expires_in).to_s
  else
    "/assets/missing.png"
  end
end

validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/

然后在我的HTML中,我得到了:<%= link_to image_tag(@challenge.s3_url(:thumb)), @challenge.s3_url(:original) %>

这应允许用户单击缩略图然后将它们带到原始图像。但目前它具有正确的裁剪缩略图,然后当用户点击它时,它将只使用裁剪缩略图的较大版本,而不是原始图像。

有没有办法做我想做的事?

1 个答案:

答案 0 :(得分:2)

问题与this SO question.相同基本上需要在路径中添加:style。现在它正常工作。

现在看起来像:

has_attached_file :image,
  default_url: "/assets/missing.png",
  url: "s3_domain_url",
  storage: :s3,
  s3_credentials: "#{Rails.root}/config/aws-#{Rails.env}.yml",
  s3_permissions: 'authenticated-read',
  path: "/users/:id/images/:style/:basename.:extension",
  s3_server_side_encryption: :aes256,
  styles: { thumb: "200x200#" }