LoginSignup
0
0

More than 1 year has passed since last update.

【Ruby on Rails】画像投稿と表示の方法と手順

Posted at

対象者

・画像投稿機能を作りたい方
・画像を表示させたい方

手順目次

1.Gemfileに画像投稿用のgemを追加

2.カラムの追加とデータベースの反映

3.ストロングパラメーターとの設定とattachmentメソッドの追加

4-1. 画像を投稿する場合

4-2. 画像を表示する場合

実際の手順と実例

1.Gemfileに画像投稿用のgemを追加

# 画像投稿用gem
gem "refile", require: "refile/rails", github: 'manfe/refile'
# 画像加工用(サイズ調整など)gem
gem "refile-mini_magick"

RefileというGemを使って画像投稿ができるようにします。
Refileとは、アプリケーション向けのファイル・アップロードのライブラリのことです。
さらにmini_magickは画像加工ができるようにするライブラリです。

その後bundle installを実行します。

2.カラムの追加とデータベースの反映

実例として今回使用するモデルはUser, カラム名をprofile_image_idとします。

ターミナルで以下を実行します。

username:~/environment/bookers2 $ rails g migration AddProfileImageIdUsers profile_image_id:string

作成後は下記のコマンドを実行しないとデータベースに反映されません。

username:~/environment/bookers2 $ rails db:migrate

3.ストロングパラメーターとの設定とattachmentメソッドの追加

ストロングパラメーターとモデルで追加する際、カラム名はpofile_image_idですが、idはつけません

users.controllerにて一番下にストロングパラメーターを設定します。

  private

  def user_params
    params.require(:user).permit(:profile_image)
  end

また、モデルにattachmentメソッドも追加します。

class User < ApplicationRecord
:
:
attachment :profile_image
:
:
end

4-1.画像を投稿する場合

<%= attachment_field:カラム名 %>

画像投稿用のフォームです。
実例では、viewページに追加してます。

<%= f.attachment_field :profile_image %>

4-2.画像を表示する場合

下記が構文です。

<%= attachment_image_tag 保存先インスタンス名(もしくは変数), :保存先カラム名, 代替画像, :サイズ(横幅,高さ)  %>

これを画像を表示させたい場所に挿入します。
実例は以下のとおりです。

<%= attachment_image_tag user, :profile_image, fallback: "no_image.jpg", size:'80x80' %>

fallback
何も画像データがカラムに保存されていないときに変わりとなる画像を挿入してくれます。
今回はno.image.jpgを挿入しました。no.image.jpg画像データはapp/asset/imagesに保存をしないと反映されません。

size
fillを使うやり方もありますがsizeを使用しています。「数字 エックス 数字」となることに注意してください。

以上が画像の投稿と表示の手順です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0