【发布时间】:2020-02-02 11:48:16
【问题描述】:
我是 Rails 新手,遇到了一个我认为很简单的问题。我想上传一张图片,调整它的大小,然后显示调整后的图片。我可以使用carrierwave上传,但是当尝试调整它的大小并使用mini_magick显示它时,一切都出错了!基于 mini_magick 文档,我在课堂上创建了一个方法来调整图像的大小;
class Item < ApplicationRecord
require "mini_magick"
mount_uploader :filename, ImageUploader
def resize_to_dev
output_file_name = "public/uploads/item/filename/" + "#{self.id}" + "/" + "#{self.id}" + ".jpg"
image = MiniMagick::Image.open(self.filename.current_path)
image.resize "100x100"
image.format "jpg"
image.write output_file_name
end
end
这会调整图像大小并将其重命名为 itemid.jpg。但是,如果我尝试在我的显示模板中使用此代码显示它。
<p><% @item.resize_to_dev %>
<p><% output_file_dir = "public/uploads/item/filename/" + "#{@item.id}" + "/" + "#{@item.id}" + ".jpg"%>
<p><%= image_tag(output_file_dir, alt: 'Image')%>
我得到了错误;
'资产管道中不存在资产“public/uploads/item/filename/2/2.jpg”。'
即使文件在那个位置。
必须有更简单的方法来做到这一点!非常感谢任何帮助。
【问题讨论】: