Carrier Wave
這套 gem 提供一個簡單且非常彈性的方式來協助 Ruby 程式上傳圖片,同時也能夠跟 Rake base 的程式整合的很好 e.g. Ruby on Rails
- 安裝 gem
1 2
| gem 'carrierwave' > bundle install
|
- 建立 uploader
1
| > rails g uploader Avatar
|
- 範例我們加開一個 User
1 2
| > rails g model User name bio:text > rake db:migrate
|
- 針對已經存在的物件我們加入關聯
1 2
| > rails g migration AddAvatarToUsers avatar:string > rake db:migrate
|
- 調整 User Model 讓 User 可以取得 carrierwave 處理好的資訊
1 2 3
| class User < ActiveRecord::Base mount_uploader :avatar, AvatarUploader end
|
- 處理 View
1 2 3 4 5 6
| <%= form_for @user, :html => {:multipart => true} do |f| %> <p> <%= f.file_field :avatar %> <%= f.hidden_field :avatar_cache %> </p> <% end %>
|
注意 :html => {:multipart => true}
要加,還有 controller
中的 permit
要放行。
e.g params.require(:user).permit(:name, :bio, :avatar, :avatar_cache)
接下來在 view 中就可以使用 <%= image_tag(@user.avatar_url) %>