Ruby on Railsでアプリケーションを作成しています。
投稿された一覧と投稿フォームを同じ画面に表示できるように制作しています。
現在、投稿フォームをブラウザ上に表示させることはできました。ただ、投稿フォームを入力後、「Create」ボタンを押すと、createアクションが働いて、詳細画面(showアクション)へリンクさせるつもりが、
「ActiveModel::UnknownAttributeError in BooksController#create
unknown attribute 'title' for Book.」とエラーが発生してしまいます。
「エラーの内容はBookモデルにtitleの列が見つかりません」ということだと思うのですが、
Bookモデルにtitleの列は既に作成済みです。
このエラーにつきまして、どのようなことが原因で、どのように対処すれば詳細画面へ移れますでしょうか。
かなりの初心者ですがよろしくお願いいたします。
↓ルーティング
Rails.application.routes.draw do
root to: 'homes#top'
resources :books
end
↓ Booksコントローラー
class BooksController < ApplicationController
def index
@books = Book.all
@book = Book.new
end
def create
book = Book.new(book_params)
book.save
redirect_to book_path(book)
end
def show
@book = Book.find(params[:id])
end
private
def book_params
params.require(:book).permit(:title, :body)
end
end
↓マイグレーションファイル
class CreateBooks < ActiveRecord::Migration[6.1]
def change
create_table :books do |t|
t.string :title
t.text :body
t.timestamps
end
end
end
↓一覧のhtml
<div class="main"> <div class="Books"> <h1>Books</h1> <table> <thead> <tr> <th>Title</th> <th>Body</th> </tr> </thead> <tbody> <% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.body %></td> <td><%= link_to 'Show', book_path(book) %></td> <td><%= link_to 'Edit', edit_book_path(book) %></td> <td><%= link_to 'Destroy', books_path %></td> </tr> <% end %> </tbody> </table> </div> </div> <h2>New book</h2> <%= form_with model:@book, local:true do |f| %> <p>Title</p> <%= f.text_field :title %> <p>Body</p> <%= f.text_area :body %><%= f.submit 'Create Book' %>
<% end %>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。