2020年3月8日 星期日

Rails 圖片上傳gem carrierwave安裝

https://ithelp.ithome.com.tw/articles/10199035

Rails的圖片上傳功能像是接水管一樣
重點在於連接uploader

  1. gemfile>安裝 gem carrierwave> bundle insatll #安裝gem,將上傳的功能完備
  2. rails g uploader Image >幫助我們在此路徑:app/uploaders/image_uploader.rb新增了檔案。
  3. rails g migration add_image_to_restaurants image:string > 建立資料庫上傳Image所需欄位
  4. ctrlp>某個restaurant model>mount_uploader :image, ImageUploader>它會幫我們翻譯資料庫語言(SQL)跟資料庫要資料(餐廳圖片)。
  5. 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%>
  1. 修改controller params部分,加上允許上傳至欄位的參數,告訴rails,新的image欄位是安全的。增加permit的欄位:image。


開啟一個uploader,在form表單開啟一個uploader。讓圖片可以上傳。
然後再使用image helper就可以顯示圖片了。真棒。

沒有留言:

張貼留言

cloud9上面開發rails

 使用IAM身分登入,以免有資安問題。(用admin帳號登入,創建iam使用者,然後在上面的連結登入) 選擇 ubuntu18.04 減少查詢成本。 已經是超級使用者了,sudo 什麼都不需要輸入密碼了。 $ ruby -v  檢查 ruby使用的版本>>2.6.3,...