所以我要做的就是为缩略图设置一个中央裁剪的图像,然后保持原始图像不变,这样我就可以点击缩略图并将用户带到原始图像。
所以在我的模型中我有:
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) %>
这应允许用户单击缩略图然后将它们带到原始图像。但目前它具有正确的裁剪缩略图,然后当用户点击它时,它将只使用裁剪缩略图的较大版本,而不是原始图像。
有没有办法做我想做的事?
答案 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#" }