# Rails 增加上傳圖片功能 ###### tags: `rails`, `ruby` 環境: > ruby 2.6.7 > > Rails 6.1.3.1 > > Ubuntu 20.04 LTS > <font color="red">**資源連結**:</font><font size=4>[**Active Storage**](https://railsguides.jp/active_storage_overview.html)</font> <!-- <font size=4></font> --> <!-- <font color="red"</font> --> ## :memo: ### Step 1: 移至ubuntu, 生成相關migration ```ruby= # Ubuntu $ rails active_storage:install $ rails db:migrate ``` ### Step 2: 移至需要使用圖片的models加上<font color="red">`has_one_attached :(自訂名)`</font> ```ruby= # 路徑:/appname/app/models/user.rb class User < ApplicationRecord has_one_attached :avatar end ``` - **移至html.erb增加上傳圖片欄位** ```ruby= # edit.html.erb <%= form.file_field :avatar %> ``` - **移至controller.rb** ```ruby= # users_controller.rb def create @user.create(...., avatar: params[:avatar]) end ``` ```ruby= # show.html.erb <% if @user.avatar.attached? %> <%= image_tag @user.avatar %> <% end %> ``` ### Step 3: 調整上傳圖片大小 ```ruby= # Gemflie gem 'image_processing', '~> 1.2' gem 'mini_magick', '~> 4.11' # ubuntu $ sudo apt install imagemagick ``` ```ruby= <% if @user.avatar.attached? %> <%= image_tag @user.avatar.variant(resize: '200x200') %> <% end %> ```