Carrierwave 使用實作
特點:使用彈性、易於整合
step1:
先在gemfile中加入 gem 'carrierwave' 與 gem 'Mini_magick'後者是調整圖片size,
接著 輸入 bundle install下載gem,然後輸入rails g -h後,可以看到新的generator 叫做uploader。
step2:Uploader
來談到uploader,輸入rails g uploader picture(創見一個uploader檔案叫做picture),
做到這裡還無用,因為還需要欄位去存取圖片,所以,
rails g migration add_picture_to_articles picture
(articles就是你要連結的model,假設是accufind,那就是targets,這已注意要用複數)
them,type:rake db:migrate
step3:model
接著去model article中,把uploader與model做連結,在model/article裡加入
$ mount_uploader :picture, PictureUploader(注意後面要大寫)
step4:View
首先在 view/article/show.html.erb 加入這行,
<%= image_tag (@article.picture) %>
以便顯示圖片!
接著,在view/article/_form_html.erb這邊,讓使用者有能附帶檔案的欄位
<%= f.label :picture %>
<%= f.file_field :picture %>
而在弄完view時,因為rails 會有strong parameters的限制,
所以得在controller/articles_controller.rb做修改
params.require(:article).permit(:title, :text, :picture)
permit後面加上,':picture',輸入完後,
因為carrierwave的uploader再重啟server,再開一遍才能run
附錄:這邊目前只實作簡單地上傳、顯示圖片功能,至於驗證、圖片大小、刪除圖片,都還未寫上,因此如果要深入探討,請參考此網站
檔案上傳功能 - 使用 Carrierwave
最後,附上demo的影片