使用 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 %>