上一篇說明如何設定AWS S3。這一篇則是記錄使用carrierwave實作圖片上傳。
本例我們將建立一個model:Photo 配合carrierwave實現圖片上傳
安裝gem carrierwave
Gemfile1 2
| gem "carrierwave" gem "mini_megick"
|
1 2
| >>bundle install >>rails g uploader image
|
會產生uploaders/image_uploader.rb
設定autoload_paths
config/application.rb1 2 3 4 5 6
| module Artstore class Application < Rails::Application ...(略) config.autoload_paths += %W(#{config.root}/app/uploaders) end end
|
建立model:Photo
1 2
| >>rails g model photo product_id:integer image:string >>rake db:migrate
|
假如己有一個product model,設定product和photo的關聯
models/photo.rb1 2 3 4 5
| class Photo < ActiveRecord::Base belongs_to :product mount_uploader :image, ImageUplader end
|
models/product.rb1 2 3 4 5
| class Product < ActiveRecord::Base has_one :photo
accepts_nested_attributes_for :photo end
|
新增product時能新增圖片
app/controllers/admin/products_controller.rb1 2 3 4
| def new @product = Prodcut.new @photo = @product.build_photo end
|
將upload資料夾加入gitignore
以上是使用carrierwave上傳圖片的流程,下一篇說明使用figaro管理s3密鑰。