質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

513閲覧

uninitialized constantエラーが出て投稿画像が削除できない

_3443_

総合スコア5

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/02/29 06:02

編集2020/04/02 11:07

前提・実現したいこと

Railsで投稿(Post)に紐付く画像(Image)が投稿できるアプリケーションを作成しております。

Imageにdestroyアクションを追加し実行しようとしたところ下記のエラーが出ました。

発生している問題・エラーメッセージ

イメージ説明

NameError in ImagesController#destroy uninitialized constant Image::Safe

該当のソースコード

【image.rb】

rails

1class Image < ApplicationRecord 2 belongs_to :post 3 belongs_to :user 4 has_many :likes, dependent: :destroy 5 has_many :liking_users, through: :likes, source: :user 6 has_many :comments, dependent: :destroy 7 has_many :commenting_users, through: :comments, source: :user 8 has_many :saves, dependent: :destroy 9 has_many :users, through: :saves, source: :user 10 validates :image, presence: true, unless: :text? 11 mount_uploader :image, ImageUploader 12end

【post.rb】

rails

1class Post < ApplicationRecord 2 belongs_to :prefecture 3 belongs_to :user 4 belongs_to :genre 5 belongs_to :post_top_image, dependent: :destroy 6 has_many :images 7 has_many :likes, dependent: :destroy 8 has_many :liking_users, through: :likes, source: :user 9 has_many :comments, dependent: :destroy 10 has_many :commenting_users, through: :comments, source: :user 11 has_many :histories, dependent: :destroy 12 validates :title, :pronunciation_key, :prefecture_id, :address, :genre_id, presence: true 13 mount_uploader :image, ImageUploader 14end

コントローラー

【images_controller.rb】

rails

1 def destroy 2 image = Image.find(params[:id]) 3 image.destroy 4 redirect_to post_images_path(@post) 5 end

【ビュー】

.comment-main__menu-destroy = link_to "削除", post_image_path(@post, @image), method: :delete, class: "btn-image-menu"

試したこと

コントローラーにてdestroyをdeleteに変更するとImageモデルのデータを削除することはできました。
今回はImageモデルに紐づいて削除したいモデルが複数あるため、destroyで実行したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問