学習の書き留め プログラミング勉強中

プログラミングで学んだことを日記として残して行こうと思います

今日の学習

今日学んだこと 2021/01/10

学習項目

画像のアップロード方法

学習内容

通常何もしない場合、画像はurlを入れて、任意の画像を表示できる。
自分のファイルにある画像を送る方法を学んだので、まとめていく。

まず、rails でファイルのアップロードができるgemはActive Storageで元々はインストールがが必要だっだらしいが、現在は必要ない。
画像に加工できるツール、gemのインストールを行う必要があり、 ImageMagick: コマンドラインから画像に処理を加えることができるツール
MiniMagick: ImageMagickの機能をRubyで扱えるようにしてくれるGem
ImageProcessing: MiniMagickでは提供できない、画像サイズを調整する機能を提供するGem
をそれぞれ、インストールする。

ImageMagick

brew install imagemagick

MiniMagick、ImageProcessing はそれぞれ、Gemfileに記述

gem 'mini_magick'
gem 'image_processing', '~> 1.2'
bundle install

その後、Active Storageのインストールし、マイグレーションファイルができるので、マイグレートする

rails active_storage:install
rails db:migrate

保存したい、モデルとファイルを紐付ける

class モデル < ApplicationRecord
  has_one_attached :ファイル名
end

画像の表示は image_tag を使う

# ファイルをモデルから指定する場合
<%= image_tag モデル.画像ファイル %>
<%= image_tag sample.image %>

# app/assets/ディレクトリ下の画像ファイルパスでも指定できる
<%= image_tag 画像ファイルのパス %>
<%= image_tag "image.png" %>

# 以下の記述で、画像が無い場合、表示しないようにできる
<%= image_tag sample.image, if message.image.attached? %>

画像の加工は variantメソッド を使う

モデル.ファイル名.variant(resize: '幅x高さ')

まとめ

画像を送る手順を覚えれば、インスタも夢じゃない!!