使用 Carrierwave 上传单个文件
在 Rails 中开始使用文件上传非常简单,首先要做的是选择插件来管理上传。最常见的是 Carrierwave 和 Paperclip 。两者在功能上相似,并且文档丰富
让我们来看看带有 Carrierwave 的简单头像上传图片的示例
在 bundle install
Carrierwave 之后,输入控制台
$ rails generate uploader ProfileUploader
这将创建一个位于 /app/uploaders/profile_uploader.rb 的配置文件 **
在这里,你可以设置存储(即本地或云),应用图像处理扩展(即通过 MiniMagick 生成拇指)并设置服务器端扩展白名单
接下来,使用字符串 tipe 为 user_pic 创建新的迁移,并在 user.rb 模型中为其安装上传器。
mount_uploader :user_pic, ProfileUploader
接下来,显示上传头像的表单(可能是用户的编辑视图)
<% form_for @user, html: { multipart: true } do |f| %>
<%= f.file_field :user_pic, accept: 'image/png, image/jpg' %>
<%= f.submit "update profile pic", class: "btn" %>
<% end %>
确保包含{multipart:true}以便订单表格可以处理上传。Accept 是可选的设置客户端扩展白名单。
要显示头像,只需执行
<%= image_tag @user.user_pic.url %>