前提・実現したいこと
railsでデータベースを使ったbookアプリを作っています。
フォームの中身が空の時エラーの文字が出るバリエーションをを作りたいのですが、エラーが起き前に進みません。
該当のソースコード
books_controller.rb
class BooksController < ApplicationController def index end def show @book = Book.find(params[:id]) end def new # Viewへ渡すためのインスタンス変数に空のモデルオブジェクトを生成する。 @book = Book.new @books = Book.all end def edit @book = Book.find(params[:id]) end def books end def create book = Book.new(list_params) if book.save redirect_to book_path(book.id) else @books = Book.new render 'new' end end def update book = Book.find(params[:id]) if book.update(list_params) redirect_to book_path(book.id) else render 'new' end end def destroy book = Book.find(params[:id]) book.destroy redirect_to books_path end private def list_params params.require(:book).permit(:title, :body) end end
new.html.erb
<main> <!-- form_with部分 --> <%= form_with model: @book,local:true do |f| %> <% if @book.errors.any? %> <p>エラーです</p> <% end %> <% @books.each do |book| %> <div id="main-title"> <h4>Books</h4> </div> <table> <div id="book-index"> <thead> <tr> <th>Title</th> <th>body</th> <th></th> </th> </thead> <tr><span><%= book.title %></span></tr> <tr><span><%= book.body %></span></tr> <tr><%= link_to 'Show', book_path(book) %></tr> <tr><%= link_to 'Edit', edit_books_path(book.id) %></tr> <tr><%= link_to "delete", book_path(book), method: :delete, data:{confirm:'Are you sure?'}%></tr> <% end %> </div> </table> <div class="main-item"> <div class="main-logo"> <h1>New book</h1> </div> <div class="main-list"> <h4>title</h4> <%= f.text_field :title %> </div> <div class="main-list2"> <h4>body</h4> <%= f.text_area :body %> <%= f.submit '投稿' %> <% end %> </div> </div> </main>
book.rb
class Book < ApplicationRecord validates :title, presence: true validates :body, presence: true,length: {minimum: 5} end
試したこと
rails初心者でbook.controllerの中身をいじってみたり、変数を変えてみたりしたのですが、解決しませんでした。回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/06 02:37
2021/02/06 02:41
2021/02/07 13:37