Railsで画像をアップロードする方法を現役エンジニアが解説【初心者向け】
初心者向けにRailsで画像をアップロードする方法について現役エンジニアが解説しています。Rubyのライブラリであるgemを使ってRailsにアップローダーを作成します。CarrierWaveというgemを使い、モデルにマウントしフォームを作成します。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Railsで画像をアップロードする方法について解説します。
Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。
なお本記事は、TechAcademyのオンラインブートキャンプRuby on Rails講座の内容をもとに紹介しています。

今回は、Rubyに関する内容だね!

どういう内容でしょうか?

Railsで画像をアップロードする方法について詳しく説明していくね!

お願いします!
Railsで画像をアップロードする方法
Railsで画像をアップロードする場合は、Rubyで自分でコードを書いて実装する方法とgemを使用して実装する方法の2つがあります。
今回はgemで実装する方法を解説していきます。様々なgemがありますが、今回はCarrierWaveを使用した方法を紹介します。
画像アップロード用gemのCarrierWaveとは
CarrierWaveはシンプルでフレキシブルなファイルアップロードを実装できるgemです。簡単に画像のアップロード機能をアプリケーションに実装できる、便利なgemなのでぜひ使い方をマスターしましょう。
CarrierWaveの使い方
CarrierWaveは、以下の3ステップで使用できるようになります。
- gemをインストールする
- アップローダーを作成する
- モデルにカラムを追加し、マウントする
上記の3つの準備をした上で、画像を保存すると画像がpublicフォルダに保存されます。
サンプルコード
それではインストールから実装まで実際に書いてみましょう。まず、gemをインストールします。以下のコマンドをgemfileに追加してbundleします。
gem 'carrierwave'
次に以下のコマンドをターミナルでアップローダーを作成します。
今回はimageという名前のアップローダーを作成し、postモデルにimageというカラムを追加してマウントします。
rails generate uploader image
カラムを以下の方法で追加します。カラムはstringであれば、問題ないです。
rails generate migration add_image_to_posts image:string rails db:migrate
そしてモデルに以下を追加します。
class Post < ActiveRecord::Base mount_uploader :image, ImageUploader end
これで準備は完了です。viewに画像を送信するフォームとコントローラーを用意して、保存してみましょう。フォームは以下のように書きます。
<%= form_for @post do |f| %> <%= f.file_field :image %> <%= f.submit 'アップロードする'%> <% end %>
コントローラーでは、以下のように書きます。ストロングパラメーターに特に違いはありません。
class PostsController < ApplicationController def create @post = Post.new(post_params) end private def post_params params.require(:post).permit(:image) end end
実際に投稿して、画像がpublicフォルダ内に保存されていれば完成です。
以上で解説を終わります。
[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中
筆者プロフィール
メンター金成さん
フリーランスエンジニア。 使える言語は、Ruby Python Go 。最近はGoにハマってます。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。

プログラミングを独学していて、このように感じた経験はないでしょうか?
- ・調べてもほしい情報が見つからない
- ・独学のスキルが実際の業務で通用するのか不安
- ・目標への学習プランがわからず、迷子になりそう
テックアカデミーでは、このような
学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供
しています。
30分間、オンラインでどんなことでも質問し放題です。
「受けてよかった」と感じていただけるよう
厳しい試験を通過した講師
があなたの相談に真摯に向き合います。
「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」
こんな気持ちでも大丈夫です。
無理な勧誘は一切ありません
ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)