前提・実現したいこと
簡易的な本の投稿アプリケーションを作成中です。
投稿一覧機能と投稿機能を同じページに実装しており、
投稿時に「titel」「body」が空欄で投稿ボタンを押した際、
エラーメッセージ(英語のまま)が出るように実装したいです。
いろいろ調べて試して見た結果このコードが正解だと思うのですが、
コントローラーのif book.save
にエラーが出てしまい全く前に進まない状況です。
よろしくお願い致します。
発生している問題・エラーメッセージ
undefined method ` if' for #BooksController:0x00007f28a4024788
Extracted source (around line #21):
def create
book = Book.new(book_params)
if book.save
redirect_to book_path(book.id)
flash[:notice] = 'Book was successfully created.'
該当のソースコード
[book_controller.rb]
class BooksController < ApplicationController
def index
@book = Book.new
@books = Book.all
end
def show
@book = Book.find(params[:id])
end
def new
end
def edit
@book = Book.find(params[:id])
end
def create
book = Book.new(book_params)
if book.save
redirect_to book_path(book.id)
flash[:notice] = 'Book was successfully created.'
else render 'index' end
end
def update
book = Book.find(params[:id])
book.update(book_params)
flash[:update] = 'Book was successfully updated.'
redirect_to book_path(book.id)
end
def destroy
@book = Book.find(params[:id])
@book.destroy
flash[:destroy] = 'Book was successfully destroyed.'
redirect_to books_path
end
private
def book_params
params.require(:book).permit(:title, :body)
end
end
[book.rb]
class Book < ApplicationRecord
end
class Book < ApplicationRecord
validates :title, presence: true
validates :body, presence: true
end
試したこと
モデルのバリデーションのコードやコントローラーのコードのスペルミスは行いました。
また、27行目のelsebの部分をrender 'create'
に変更したりしてみましたが、直りません。
補足情報(FW/ツールのバージョンなど)
ruby on rails
vagrant
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/12 05:08
2019/10/12 06:44
2019/10/12 09:20