Railsでバリデーションエラーが発生している場合、大体の場合でエラーメッセージを表示します。
メッセージはモデルのerrorsに格納されていて、いくつかの取得方法があります。
全てのエラーメッセージを取得
errors.messages
エラーメッセージをハッシュ形式で取得します。
@post.errors.messages
=> {:title=>["can't be blank"]}
errors.full_messages
全てのエラーメッセージを配列で取得します。
@post.errors.full_messages
=> ["Title can't be blank"]
複数のメッセージが格納されていることもあるので、全て表示するには each
でループで回しましょう。
<% @post.errors.full_messages.each do |message| %>
<%= message %>
<% end %>
個別のエラーメッセージを取得
errors.full_messages_for(symbol)
対象のシンボルのメッセージを配列で取得します。
@post.errors.full_messages_for(:title)
=> ["Title can't be blank"]
こちらも複数のメッセージが格納されていることもあるので、全て表示するには each
でループで回しましょう。
<% @post.errors.full_messages_for(:title).each do |message| %>
<%= message %>
<% end %>