バリデーション機能をつかい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
validationをいれる前はうごいていたというのですから、それからエラーが出るまでにしたことに原因があります。
さわったところは全部載せましょう。どう変えたのか の説明付きだと親切
回答有難うございます。変更前のコード追記いたしました
よろしくお願いします
ああ、
vlidationを入れたら とあったので modelに追加したのかと思ったのですが、validationの結果をControllerで判定するようにした、ということですね。
view edit では @book が使われてますが、 action update では @bookが定義されていないのが原因です。
book を @book にしましょう
そうしますと render:edit でこけてますね。
回答有難うございます。@bookに直したのですがやはり同じエラーが
でてしまいます。画像のほう付けさせていただきました、見ていただけると
幸いです
codeは画像でなく <code>をつかってtextにしてもらいたいです
回答1件
あなたの回答
tips
プレビュー