Rails的圖片上傳功能像是接水管一樣
重點在於連接uploader
- gemfile>安裝 gem carrierwave> bundle insatll #安裝gem,將上傳的功能完備
- rails g uploader Image >幫助我們在此路徑:app/uploaders/image_uploader.rb新增了檔案。
- rails g migration add_image_to_restaurants image:string > 建立資料庫上傳Image所需欄位
- ctrlp>某個restaurant model>mount_uploader :image, ImageUploader>它會幫我們翻譯資料庫語言(SQL)跟資料庫要資料(餐廳圖片)。
- ctrlp>_form,修改view>
注意這邊一定要有if判斷,不然假如沒有上傳圖片,那就會當機。
ruby的寫法比較簡潔
<%= image_tag @restaurant.image_url if @restaurant.image_url.present? %>
普通的寫法比較複雜
<%if @restaurant.image_url.present?%>
<%= image_tag @restaurant.image_url%>
<%end%>
- 修改controller params部分,加上允許上傳至欄位的參數,告訴rails,新的image欄位是安全的。增加permit的欄位:image。
開啟一個uploader,在form表單開啟一個uploader。讓圖片可以上傳。
然後再使用image helper就可以顯示圖片了。真棒。
沒有留言:
張貼留言