上传、裁剪图片在 Rails 中不是很难实现,但是想要优雅地完成也不是那么一两下就搞的定,因此我将相关代码封装成一个 gem(upload-image),里面使用了carrierwave
、mini_magick
、cropper.js
,最终实现一句 erb 就完成此功能:
<%= upload_image form: f, image_name: :avatar, width: 150, height: 150 %>
其中form
就是那个 form 对象,image_name
是 model 中对应的图片 column 名称,width
和height
就是显示的尺寸。
效果图为:
不过有个小问题,这个 gem 里有 js 脚本,现在用的ready
事件,在新的 Turbolinks 5 中跳转不好使,需要使用turbolinks:load
,但是这样以来对之前的 Rails 应用应该也有影响了。