Carrierwave 使用實作
特點:使用彈性腐晾、易於整合
step1:
先在gemfile中加入 gem 'carrierwave' 與 gem 'Mini_magick'後者是調(diào)整圖片size浑测,
接著 輸入 bundle install下載gem精肃,然後輸入rails g -h後麦轰,可以看到新的generator 叫做uploader坦报。
step2:Uploader
來談到uploader盟步,輸入rails g uploader picture(創(chuàng)見一個uploader檔案叫做picture),
做到這裡還無用他匪,因為還需要欄位去存取圖片菇存,所以,
rails g migration add_picture_to_articles picture
(articles就是你要連結(jié)的model邦蜜,假設(shè)是accufind依鸥,那就是targets,這已注意要用複數(shù))
them,type:rake db:migrate
step3:model
接著去model article中畦徘,把uploader與model做連結(jié)毕籽,在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
附錄:這邊目前只實作簡單地上傳塘揣、顯示圖片功能包雀,至於驗證、圖片大小亲铡、刪除圖片才写,都還未寫上,因此如果要深入探討奖蔓,請參考此網(wǎng)站
檔案上傳功能 - 使用 Carrierwave
最後赞草,附上demo的影片