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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1717閲覧

Railsでバリデーション機能を実施する際にエラーメッセージがでます

uruman

総合スコア12

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2021/10/10 04:37

編集2021/10/10 06:54

イメージ説明### 前提・実現したいこと

バリデーション機能をつかいupdatえ失敗時にエラー分をだす機能を実装中に
update画面に飛ぶとエラーが出でしまいます。
バリデーション機能を追加するためにコードを書く前までは問題なくupdate画面までいきupdateできていました

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

SyntaxError in BooksController#edit /home/ec2-user/environment/bookers/app/views/books/edit.html.erb:31: syntax error, unexpected ensure, expecting end-of-input ensure ^~~~~~

###エラー前のコード

contllore

1 def update 2 book = Book.find(params[:id]) 3 book.update(book_params) 4 redirect_to book_path(book.id) 5 flash[:notice] = "Book was successfully updated." 6 end

edit

1<h1>Editing Book</h1> 2<%=form_with model:@book,url:"/books/#{@book.id}",locla:true do |f| %> 3<div class = "field"> 4<label for = "book_title">Title</label> 5<%=f.text_field:title %> 6</div> 7 8<div class = "field"> 9<label for = "book_body">Body</label> 10<%=f.text_area:body%> 11</div> 12<div class = "actions"> 13<%=f.submit'Update Book'%> 14</div> 15<%end%> 16<%=link_to "Show",book_path(@book.id)%> 17| 18<%=link_to"Back",books_path(@book.id)%>

ソースコード

controller

1def update 2 book = Book.find(params[:id]) 3 if book.update(book_params) 4 redirect_to book_path(book.id) 5 else 6 render:edit 7 end 8 flash[:notice] = "Book was successfully updated." 9 end

edit

1<h1>Editing Book</h1> 2<%=form_with model:@book,url:"/books/#{@book.id}",locla:true do |f| %> 3<if book.errors.any?> 4 <h2><%=book.errors.count%>errors prohibited this book from being saved:</h2> 5 <ul> 6 <%=member.errors.full_messages.each do |message| %> 7 <li><%=message%></li> 8 <%end%> 9 </ul> 10 <%end%> 11 12<div class = "field"> 13<label for = "book_title">Title</label> 14<%=f.text_field:title %> 15</div> 16 17<div class = "field"> 18<label for = "book_body">Body</label> 19<%=f.text_area:body%> 20</div> 21 22<div class = "actions"> 23<%=f.submit'Update Book'%> 24</div> 25<%end%> 26<%=link_to "Show",book_path(@book.id)%> 27| 28<%=link_to"Back",books_path(@book.id)%> 29

試したこと

endの記載間違えの確認

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

rails 5.2.6

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

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

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

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

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

winterboum

2021/10/10 04:41

validationをいれる前はうごいていたというのですから、それからエラーが出るまでにしたことに原因があります。 さわったところは全部載せましょう。どう変えたのか の説明付きだと親切
uruman

2021/10/10 04:58

回答有難うございます。変更前のコード追記いたしました よろしくお願いします
winterboum

2021/10/10 06:29

ああ、 vlidationを入れたら とあったので modelに追加したのかと思ったのですが、validationの結果をControllerで判定するようにした、ということですね。 view edit では @book が使われてますが、 action update では @bookが定義されていないのが原因です。 book を @book にしましょう そうしますと render:edit でこけてますね。
uruman

2021/10/10 07:18 編集

回答有難うございます。@bookに直したのですがやはり同じエラーが でてしまいます。画像のほう付けさせていただきました、見ていただけると 幸いです
winterboum

2021/10/10 08:19

codeは画像でなく <code>をつかってtextにしてもらいたいです
guest

回答1

0

ベストアンサー

ここかな
<if book.errors.any?>

<%if book.errors.any?%>
に。
<% end %> 突き合わせてないので、それの確認もお忘れなく

投稿2021/10/10 08:22

winterboum

総合スコア23567

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

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

uruman

2021/10/10 08:39

回答有難うございます。無事解決することができました! 本当に有難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問