使用 Carrierwave 上传单个文件

在 Rails 中开始使用文件上传非常简单,首先要做的是选择插件来管理上传。最常见的是 CarrierwavePaperclip 。两者在功能上相似,并且文档丰富

让我们来看看带有 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 %>