モデルがsaveに失敗したら、エラーメッセージを出すようにしたくて、
例題通り書くとサーバエラーになってしまった。
<%= form_for(@ad, :url=>{:action=>'create'}) do |f| %>
<%= f.error_messages %>
このコードはアカンらしい。でたエラーがこれ。
undefined method `error_messages' for #<ActionView::Helpers::FormBuilder:0x007fb88d219970>
調べると、error_messagesはRuby on Rails(v2.3.8)までで廃止されてた。
error_messages_for (ActionView::Helpers::ActiveRecordHelper) - APIdock
Getting Started with Rails — Ruby on Rails Guides
を見ると、代わりにActiveModel::Errorsって言うクラスを使っていた。
それにならって書いたらちゃんとエラーメッセージを出せた。
<% if @ad.errors.any? %>
<div id="errorExplanation">
<h2><%= pluralize(@ad.errors.count, "error") %> prohibited
this post from being saved:</h2>
<ul>
<% @ad.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
こういう細かい所が変わってるのがたくさんある。
やっぱ初版2010/1はちょっと古かったかなー。
- Head First Rails ―頭とからだで覚えるRailsの基本/オライリージャパン
- ¥3,990
- Amazon.co.jp