【解決したいこと】
Form withで作成したフォームに空欄があった場合
validationでエラーが表示されるようにしたいです。
【困っていること】
様々なサイトをみるとapp/models/ XXX.rbに
validationコードを記載するとイメージ図のような
エラーがform withに空欄があった際に表示されると
記載されているのですが何も表示されず困っています。
createボタンが薄くなるだけで何も反応がでません。
【記載コード】
book.rb:
class Book < ApplicationRecord
validates :title, presence: true
validates :body, presence: true
end
books.controller:
class BooksController < ApplicationController
def top
@book = Book.new
end
def new
@book = Book.new
end
def index
@books = Book.all
end
def create
book = Book.new(book_params)
book.save
end
def show
@book = Book.find(params[:id])
end
def destroy
book = Book.find(params[:id])
book.destroy
redirect_to request.referer
end
def edit
@book = Book.find(params[:id])
end
def update
book = Book.find(params[:id])
if book.update(book_params)
flash[:success] = "Book was successfully updated."
redirect_to booksshow_path(book.id)
else flash.now[:danger] = "登録に失敗しました。" render 'Book/new' end
end
private
def book_params
params.permit(:title, :body)
end
end
index.html.erb:
<body class="indexbody"> <h1 class="indexh1">Books</h1> <table class="table"> <thead class="thead"> <tr> <th>Title</th> <th>Body</th> <th colspan="3"></th> </tr> </thead></table><tbody> <% @books.each do |f| %> <tr> <td class="td1"><%= f.title %></td> <td class="td1"><%= f.body %></td> <td class="td1"><%= link_to "Show", "/books/#{f.id}" %></td> <td class="td1"><%= link_to "Edit", "books/#{f.id}/edit" %></td> <td class="td1"><%= link_to "Destroy", "books/#{f.id}", method: :delete, "data-confirm" => "Are you sure?" %></td> </tr> <% end %> </tbody>
↓これがform withでtitleかbodyがが空欄だったらエラー表示したい↓
<h2>New book</h2> <%= form_with model:@book, local:true do |f| %> <h4>Title</h4> <%= f.text_field :title %> <h4>Body</h4> <%= f.text_area :body %> <div class="submit"><%= f.submit 'Create Book' %></div>****<% end %>
</body>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。