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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails

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

Q&A

1回答

1092閲覧

Validationのエラーメッセージが表示できないので解決したいです。

geekhub

総合スコア0

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails

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

0グッド

0クリップ

投稿2021/06/29 03:06

【解決したいこと】
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>
<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>
</table>

↓これが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>

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

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

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

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

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

guest

回答1

0

エラーを表示させるcodeが書かれていないですね。
見た目を合わせるのは別として, 例えば

<% if @book.errors.any? %> <div class="error"> <ul> <% @book.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %>

投稿2021/06/29 03:41

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問