[055]Ruby on Rails學習筆記(7)-Carrierwave Implementation

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的影片

[055]Ruby on Rails學習筆記(7)-Carrierwave Implementation_第1张图片
add file




[055]Ruby on Rails學習筆記(7)-Carrierwave Implementation_第2张图片
show the file has been uploaded

你可能感兴趣的:([055]Ruby on Rails學習筆記(7)-Carrierwave Implementation)