質問するログイン新規登録
Ruby on Rails 5

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

Q&A

解決済

1回答

458閲覧

🔰記事編集時のバリデーションが出てきません。出てくるようにしたいです。

paopao_1111

総合スコア4

Ruby on Rails 5

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

0グッド

0クリップ

投稿2022/07/15 09:32

0

0

前提

以下の点で悩んでおります。(当方rails初心者です)
読んだ本の感想を投稿するサイトを練習中
投稿の編集時の未入力のエラーメッセージを作成中です。
しかし、エラーメッセージが表示されず、元の編集画面に戻ってしまいます。
正常に動かしたいです。
お忙しいかとは存じますが、よろしくお願いいたします。

実現したいこと

編集時のバリデーションを動作させたい。

発生している問題・エラーメッセージ

記事を空白に編集してもエラーメッセージが表示されず、編集画面に戻ってしまいます。

該当のソースコード

【HTML】

<h1>Editing Book</h1>

<% if @book.errors.any? %>
<%= book.errors.count %>件のエラーが発生しました

<ul> <% @book.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> <% end %>

<%= form_with model: @book, url: update_book_path(@book.id), method: :patch do |f| %>

<h4>Title</h4> <%= f.text_field :title %> <h4>Body</h4> <%= f.text_area :body %>

<br><%= f.submit 'Update Book' %>

<br><%= link_to "Show", book_path(@book.id) %><
<%= link_to "Back", '/books' %>

<% end %>

【コントローラ】
def edit
@book = Book.find(params[:id])
end

def update
@book = Book.find(params[:id])
book = Book.find(params[:id])
if book.update(book_params)
flash[:notice] = "Book was successfully updated."
redirect_to book_path(book.id)
else
render :edit
end
end
【モデル】
class Book < ApplicationRecord

validates :title, presence: true
validates :body, presence: true

end

試したこと

バリデーションに関しての検索
スペルチェック
コントローラのrenderのURLの変更

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

def update @book = Book.find(params[:id]) book = Book.find(params[:id]) if book.update(book_params)

updateしているのは book であって @book ではありません。
よって、@book はvalidate されてません。
ので、
<% if @book.errors.any? %> は常に失敗します。

投稿2022/07/15 10:22

winterboum

総合スコア23657

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

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

paopao_1111

2022/07/15 10:46

何度もありがとうございます! 解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問