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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

604閲覧

rails 投稿削除しようとすると、NoMethodErrorが出てしまう。。。

ttt452

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/05/06 11:47

編集2021/05/06 14:34

前提・実現したいこと

rails で本の感想を投稿できるようなwebアプリケーションを作っています。
投稿の削除DELETEメソッドが実行されたときに以下のエラーメッセージが発生しました。

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

イメージ説明
$ rails db:migrate の実行結果
イメージ説明

該当のソースコード

books_controller.rb

class BooksController < ApplicationController def create @book = Book.new(book_params) @book.user_id = current_user.id @book.save redirect_to books_path end def index # new @book = Book.new # index @books = Book.all end def show @book = Book.find(params[:id]) end def destroy @book = Book.find(params[:id]) @book.destroy redirect_to book_path end private def book_params params.require(:book).permit(:title, :body) end end

model/book.rb

class Book < ApplicationRecord belongs_to :user attachment :image end

routes.rb

Rails.application.routes.draw do devise_for :users root to: 'homes#top' resources :books, only: [:new, :create, :index, :show, :destroy] end

show.html.erb

<table class="table"> <tbody> <tr> <td> <a href="/books"> <p><%= image_tag('sample-author1.jpg') %></p><br> <p><%= @book.user.name %></p> </a> </td> <td><%= @book.title %> <td><p><%= @book.body %></p></td> <td><a class="btn btn-sm btn-success edit_book_32927" href="/books/">Edit</a></td> <td><%= link_to "Destroy", book_path, method: :delete %></td> </tr> </tbody> </table>

試したこと

Ctrl + Shift + F の全ファイル文字列検索で「image_id」を検索
→ ヒットなし
link toのpathがおかしいのではと思い、調べた
→ エラーメッセージ変化なし

よろしくお願いしますm(_ _)m

補足情報(FW/ツールのバージョンなど)

cloud9
windows10

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

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

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

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

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

guest

回答1

0

ベストアンサー

refileにてattachment :imageの使用時には

image_id:string
# これらは追加のメタデータ image_filename:string image_size:string image_content_type:string

4つのカラムが必要ですが、image_idカラムが必要ですがmigrationファイルの追加およびmigrateは行っていますか?

投稿2021/05/06 12:03

編集2021/05/06 12:06
asm

総合スコア15147

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

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

ttt452

2021/05/06 12:27 編集

回答していただき、ありがとうございます! booksのmigrationファイル ``` class CreateBooks < ActiveRecord::Migration[5.2] def change create_table :books do |t| t.text :title t.text :body t.integer :user_id t.string :image_id t.string :image_filename t.string :image_size t.string :image_content_type t.timestamps end end end ``` 入ってなかったので、追加してdb:migrateしました。(upも確認済み) しかし、同じエラーが続いています。何卒よろしくお願いします。
asm

2021/05/06 13:58 編集

create_booksに追加で書いた場合は一度down(もしくはrollback)が必要だった気がしますが・・・ migrate成功したのでしょうか? また、db:migrate後にrailsを再起動しましたか? image_idカラムがありRailsに認識されているならば、とりあえずエラーメッセージが変わる筈です。
ttt452

2021/05/06 14:32

改めて少し調べて、以下の手順を実行してみましたが、ダメでした。。。 なにか間違っていたらいいのですがw t.string :image_id も書き込んである状態で、 $ rake db:migrate VERSION=0 $ rails db:migrate $ rails db:reset $ rails s 新規投稿3つ→削除→同じエラー
ttt452

2021/05/06 14:33

一応db:migrateの結果を「発生している問題」のところに貼っておきます
asm

2021/05/06 15:24

最後にRemoveImageIdFromBooksでremoveしてるように見えますね。 とりあえず、 $ rails runner 'pp Book.column_names' にてimage_idがある事を確認してください
ttt452

2021/05/06 15:29

あ!ほんとですね。 $ rails runner 'pp Book.column_names' 実行した結果 bash: $: command not found でした;;
asm

2021/05/06 15:33

$は表記上の奴なんで、rails以降をbashに入力してください
ttt452

2021/05/06 15:36

あ、失礼しました。 Running via Spring preloader in process 2275 ["id", "title", "body", "user_id", "created_at", "updated_at", "name"] これがでてきました
asm

2021/05/06 15:40

やはり、migrateの結果、image_idカラムは作られていないor削除されている 状態ですね
ttt452

2021/05/06 16:23

こうやって調べるんですね マイグレーションファイルの扱い方がわかってませんでした。 ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問