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 %>